Cucumber.js 提供了一个命令行“二进制”,它是一个简单的 .js
文件,其中包含 shebang 指令:
#!/usr/bin/env node
var Cucumber = require('../lib/cucumber');
// ...
在 package.json
中使用 "bin"
配置键指定二进制文件:
{ "name" : "cucumber"
, "description" : "The official JavaScript implementation of Cucumber."
// ...
, "bin": { "cucumber.js": "./bin/cucumber.js" }
// ...
这一切都适用于 POSIX 系统。有人举报an issue在 Windows 上运行 Cucumber.js 时。
基本上,.js
文件似乎是通过 Windows 的 JScript 解释器(不是 Node.js)执行的,并且由于 shebang 指令而引发语法错误。
我的问题是:在 UNIX 和 Windows 系统上设置“二进制”脚本的推荐方法是什么?
谢谢。
最佳答案
Windows 会忽略 shebang 行 #!/usr/bin/env node
并将根据 .js
文件关联执行它。明确使用 Node 调用脚本
node hello.js
ps。 Pedantry:shebangs 不在 POSIX 标准中,但大多数 *nix 系统都支持它们。
如果您为 Npm 打包项目,请使用 package.json 中的“bin”字段.然后在 Windows 上,Npm 将在您的脚本旁边安装一个 .cmd
包装器,以便用户可以从命令行执行它
hello
为了让 npm 正确创建 shim,the script must have the shebang line #!/usr/bin/env Node
关于windows - 适用于 Windows 的 NPM 包 'bin' 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10396305/