我正在创建一个可以在命令行中使用的NPM包。我正在使用npm的bin
来指定我要执行的JS文件。这是我的package.json
"name": "textree",
"bin": {
"textree": "./src/cli.js"
},
但是,当我运行npm link
时,由npm创建的批处理命令具有如下内容:
@"%~dp0\node_modules\textree\src\cli.js" %*
当我运行该命令时,我收到错误: /node_modules/textree/src/cli.js:没有这样的文件或目录
如果我检查其他命令行工具,例如nodemon,他们的批处理脚本有:
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\node_modules\nodemon\bin\nodemon.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\node_modules\nodemon\bin\nodemon.js" %*
)
由于我的工具的批处理脚本不包含类似的代码,因此在运行它时会失败。
知道怎么解决吗?如何让npm为我的包中的nodemon生成相同的脚本?
答案 0 :(得分:1)
我自己想通了。我错过了在我的“./src/cli.js”脚本顶部添加hashbang行。
#!/usr/bin/env node