我有一个小node.js app" doto"我希望npm link
,以便我可以随时拨打doto
。据我所知,我需要做的就是:
mkdir doto
cd doto
npm init #call the project doto and entry point doto.js
touch doto.js #fill with some code
npm link
node doto.js
工作正常,但是当我链接包并尝试调用doto
时,找不到该命令。链接很顺利,我不得不使用sudo(是的,我知道我应该设置节点,我不需要sudo,但是现在我只想弄湿我的脚)
每当我在全球范围内安装软件包时,我都可以称之为正常。
我正在运行mac os 10.10。
doto.js
#!/usr/bin/env node
var path = require('path');
var pkg = require( path.join(__dirname, 'package.json') );
var program = require('commander');
program
.version(pkg.version)
.option('-p, --port <port>', 'Port on which to listen to (defaults to 3000)', parseInt)
.parse(process.argv);
console.log(program.port);
的package.json
{
"name": "doto",
"version": "0.0.1",
"description": "",
"main": "doto.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"commander": "~2.7.1"
}
}
我错过了什么?
答案 0 :(得分:4)
我认为您的package.json
缺少bin部分,according to the docs它应该变成类似:
{
"name": "doto",
"version": "0.0.1",
"description": "",
"main": "doto.js",
// specify a bin attribute so you could call your module
"bin": {
"doto": "./doto.js"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"commander": "~2.7.1"
}
}
因此,在您运行sudo npm link
后,您可以从任何地方运行doto
,如果您想更改可执行文件的名称,只需更改&#34; bin&#34;下的密钥。无论你喜欢什么。