我正在开发一个将发布到NPM的节点中的CLI。 由于它是一个CLI应用程序,我希望它在安装后包含在路径中,因此不需要输入“node my-app.js”来运行它。我希望它只使用“my-app”运行。
在package.json中,我包括:
"bin": {
"my-all" : "./my-app.js"
},
但这会导致通过NPM安装失败并出现此错误
错误:ENOENT,chmod'/ home / user1 / node_modules / my-app / my-app'
答案 0 :(得分:4)
假设您使用某种unix(linux,osx),请将此行放在脚本的顶部:
#!/usr/bin/env node
还要确保将文件设置为可执行文件(chmod a+x my-all
)。
这应该需要输入node my-app.js
,然后只需输入./my-app.js
即可。
关于npm打包的东西,我不确定它为什么会失败,但我猜测你的my-app.js的路径或位置存在问题。
如果可执行脚本放在PATH中的任何位置,那么它将像其他任何东西一样运行。如果运行which npm
,您将看到npm可执行脚本所在的位置。在我的系统上,大多数节点可执行文件(或可执行的npm脚本)都进入/ usr / local / bin。我假设您的package.json
可以设置为将其放在路径中的某个位置。如果您需要更改路径,请修改.profile
或系统路径。