@zkochan/pnpm
Version:
A fast implementation of npm install
28 lines (23 loc) • 739 B
JavaScript
var fs = require('mz/fs')
var join = require('path').join
var linkBins = require('./link_bins')
module.exports = function linkBundledDeps (root) {
var nodeModules = join(root, 'node_modules')
return isDir(nodeModules, _ =>
Promise.all(fs.readdirSync(nodeModules).map(mod =>
isDir(join(nodeModules, mod), _ =>
symlinkBundledDep(nodeModules, join(nodeModules, mod))
)
)))
}
function symlinkBundledDep (nodeModules, submod) {
return linkBins(nodeModules, submod, submod)
}
function isDir (path, fn) {
return fs.stat(path)
.then(stat => {
if (!stat.isDirectory()) return Promise.resolve()
return fn()
})
.catch(err => { if (err.code !== 'ENOENT') throw err })
}