UNPKG

find-node-modules

Version:

Return an array of all parent node_modules directories

62 lines (50 loc) 1.23 kB
const getPathVar = require('./get-path-var') const getSeparator = require('./get-separator') module.exports = managePath function managePath(env = {}, {platform = process.platform} = {platform: process.platform}) { const pathVar = getPathVar(env, platform) const separator = getSeparator(platform) const originalPath = env[pathVar] return {push, unshift, get, restore} function push(...paths) { return change(true, paths) } function unshift(...paths) { return change(false, paths) } function get() { return env[pathVar] } function restore() { env[pathVar] = originalPath return get() } function change(append, paths) { if (!append) { paths = paths.reverse() } paths.forEach(path => { const pathArray = getPathArray(path) addExistingPath(pathArray, env[pathVar], append) env[pathVar] = pathArray.join(separator) }) return get() } } function getPathArray(pathToAdd) { if (Array.isArray(pathToAdd)) { return pathToAdd } else { return [pathToAdd] } } function addExistingPath(array, path, appendMode) { if (!path) { return } if (appendMode) { array.unshift(path) } else { array.push(path) } }