Cucumber.js提供了一个命令行“二进制”,它是一个.js包含 shebang 指令的简单文件:
.js
#!/usr/bin/env node var Cucumber = require('../lib/cucumber'); // ...
二进制文件是package.json使用"bin"配置密钥指定的:
package.json
"bin"
{ "name" : "cucumber" , "description" : "The official JavaScript implementation of Cucumber." // ... , "bin": { "cucumber.js": "./bin/cucumber.js" } // ...
这一切在POSIX系统上都能很好地工作。在Windows上运行Cucumber.js时,有人报告了一个问题。
基本上,该.js文件似乎是通过Windows的JScript解释器(不是Node.js)执行的,并且由于shebang指令而引发语法错误。
我的问题是:设置在UNIX和Windows系统上都可以使用的“二进制”脚本的推荐方法是什么?
谢谢。
Windows将忽略shebang行#!/usr/bin/env node,并将根据.js文件关联来执行它。明确使用节点调用脚本
#!/usr/bin/env node
node hello.js
ps。Pedantry:shebangs 不在 POSIX标准中,但是大多数* nix系统都支持它们。
如果为Npm打包项目,请使用package.json中的’bin’字段。然后在Windows上,Npm将.cmd在脚本旁边安装包装器,以便用户可以从命令行执行它
.cmd
hello
为了使npm创建填充权,脚本必须具有shebang行 #!/usr/bin/env node