roo*_*man 2 javascript node.js
我有一个想要的小型node.js应用程序“ 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
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
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"
}
}
Run Code Online (Sandbox Code Playgroud)
我想念什么?
我认为您package.json丢失了bin部分,根据文档,它应该变为:
{
"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"
}
}
Run Code Online (Sandbox Code Playgroud)
因此,运行后sudo npm link可以在doto任何地方运行,如果要更改可执行文件的名称,只需将“ bin”下的键更改为所需的值即可。
| 归档时间: |
|
| 查看次数: |
816 次 |
| 最近记录: |