You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.3 KiB

var spawn = require("child_process").spawn
var path = require("path")
var port = exports.port = 1337
exports.registry = "http://localhost:" + port
process.env.npm_config_loglevel = "error"
var npm_config_cache = path.resolve(__dirname, "npm_cache")
process.env.npm_config_cache = exports.npm_config_cache = npm_config_cache
process.env.npm_config_userconfig = exports.npm_config_userconfig = path.join(__dirname, "fixtures", "config", "userconfig")
process.env.npm_config_globalconfig = exports.npm_config_globalconfig = path.join(__dirname, "fixtures", "config", "globalconfig")
process.env.random_env_var = "foo"
var bin = exports.bin = require.resolve("../bin/npm-cli.js")
var once = require("once")
exports.npm = function (cmd, opts, cb) {
cb = once(cb)
cmd = [bin].concat(cmd)
opts = opts || {}
opts.env = opts.env || process.env
if (!opts.env.npm_config_cache) {
opts.env.npm_config_cache = npm_config_cache
}
var stdout = ""
, stderr = ""
, node = process.execPath
, child = spawn(node, cmd, opts)
if (child.stderr) child.stderr.on("data", function (chunk) {
stderr += chunk
})
if (child.stdout) child.stdout.on("data", function (chunk) {
stdout += chunk
})
child.on("error", cb)
child.on("close", function (code) {
cb(null, code, stdout, stderr)
})
return child
}