|
|
|
// npm edit <pkg>[@<version>]
|
|
|
|
// open the package folder in the $EDITOR
|
|
|
|
|
|
|
|
module.exports = edit
|
|
|
|
edit.usage = "npm edit <pkg>"
|
|
|
|
|
|
|
|
edit.completion = require("./utils/completion/installed-shallow.js")
|
|
|
|
|
|
|
|
var npm = require("./npm.js")
|
|
|
|
, path = require("path")
|
|
|
|
, fs = require("graceful-fs")
|
|
|
|
, editor = require("editor")
|
|
|
|
|
|
|
|
function edit (args, cb) {
|
|
|
|
var p = args[0]
|
|
|
|
if (args.length !== 1 || !p) return cb(edit.usage)
|
|
|
|
var e = npm.config.get("editor")
|
|
|
|
if (!e) return cb(new Error(
|
|
|
|
"No editor set. Set the 'editor' config, or $EDITOR environ."))
|
|
|
|
p = p.split("/")
|
|
|
|
.join("/node_modules/")
|
|
|
|
.replace(/(\/node_modules)+/, "/node_modules")
|
|
|
|
var f = path.resolve(npm.dir, p)
|
|
|
|
fs.lstat(f, function (er) {
|
|
|
|
if (er) return cb(er)
|
|
|
|
editor(f, { editor: e }, function (er) {
|
|
|
|
if (er) return cb(er)
|
|
|
|
npm.commands.rebuild(args, cb)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|