forked from enviPath/enviPy
36 lines
778 B
JavaScript
36 lines
778 B
JavaScript
var exec = require('child_process').exec
|
|
|
|
module.exports = npmInstallPackage
|
|
|
|
// Install an npm package
|
|
// ([str]|str, obj, obj, fn) -> null
|
|
function npmInstallPackage (deps, opts, cb) {
|
|
if (!cb) {
|
|
cb = opts
|
|
opts = {}
|
|
}
|
|
deps = Array.isArray(deps) ? deps : [ deps ]
|
|
opts = opts || opts
|
|
cb = cb || noop
|
|
|
|
var args = []
|
|
if (opts.save) args.push('-S')
|
|
if (opts.saveDev) args.push('-D')
|
|
if (opts.global) args.push('-g')
|
|
if (opts.cache) args.push('--cache-min Infinity')
|
|
|
|
if (opts.silent === false) {
|
|
deps.forEach(function (dep) {
|
|
process.stdout.write('pkg: ' + dep + '\n')
|
|
})
|
|
}
|
|
|
|
var cliArgs = ['npm i'].concat(args, deps).join(' ')
|
|
exec(cliArgs, function (err, name) {
|
|
if (err) return cb(err)
|
|
cb()
|
|
})
|
|
}
|
|
|
|
function noop () {}
|