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 https://github.com/cucumber/cucumber-js/issues/60在 Windows 上运行 Cucumber.js 时。
基本上,.js
文件似乎是通过 Windows 的 JScript 解释器(而不是 Node.js)执行的,并且由于 shebang 指令而引发语法错误。
我的问题是:设置可在 UNIX 和 Windows 系统上运行的“二进制”脚本的推荐方法是什么?
Thanks.
Windows 忽略 shebang 行#!/usr/bin/env node
并将按照.js
文件关联。明确使用节点调用脚本
node hello.js
附:迂腐:shebangsaren't在 POSIX 标准中,但大多数 *nix 系统都支持它们。
如果您为 Npm 打包项目,请使用 'bin' 字段包.json https://docs.npmjs.com/files/package.json#bin。然后在 Windows 上,Npm 将安装.cmd
与脚本一起包装,以便用户可以从命令行执行它
hello
为了让 npm 正确创建垫片,脚本必须有 shebang 行 https://github.com/ForbesLindesay/cmd-shim/blob/f59af911f1373239a7537072641d55ff882c3701/index.js#L22 #!/usr/bin/env node
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)