Cucumber.js被供给命令行“二进制”,这是一个简单.js
含有认领指令文件:
#!/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系统。 有人举报的问题在Windows上运行Cucumber.js时。
基本上, .js
文件似乎通过Windows(不Node.js的)的JScript解释执行,它抛出,因为家当指令的语法错误。
我的问题是:什么是建立一个“二进制”的脚本,在UNIX和Windows系统工作的建议呢?
谢谢。
Windows将忽略shebang行#!/usr/bin/env node
,并根据执行它.js
文件关联。 明确显示有节点调用脚本
node hello.js
PS。 迂腐:shebangs 不是 POSIX标准,但它们被大多数* nix系统支持。
如果您打包为NPM项目,使用的“bin”字段的package.json 。 然后在Windows上,故宫将安装一个.cmd
包装沿侧你的脚本,使用户可以从命令行执行它
hello
对于NPM创建垫片权, 剧本必须有家当线 #!/usr/bin/env node
你的“bin”的应该是“黄瓜” NPM将创建一个“黄瓜”或“cucumber.cmd”文件指向“节点%SCRIPTNAME%”。 前者对于POSIX环境,后者是用于Windows使用...如果你想在可执行文件名的“JS”是一部分...你应该使用hyphon,而不是...“黄瓜JS” ...有一个js文件会在你的情况引起的WScript解释器来运行它作为一个JScript文件,而不是一个节点脚本.js.cmd之前。
我建议在看咖啡脚本的package.json一个很好的例子。
{
"name": "coffee-script",
"description": "Unfancy JavaScript",
"keywords": ["javascript", "language", "coffeescript", "compiler"],
"author": "Jeremy Ashkenas",
"version": "1.4.0",
"licenses": [{
"type": "MIT",
"url": "https://raw.github.com/jashkenas/coffee-script/master/LICENSE"
}],
"engines": {
"node": ">=0.4.0"
},
"directories" : {
"lib" : "./lib/coffee-script"
},
"main" : "./lib/coffee-script/coffee-script",
"bin": {
"coffee": "./bin/coffee",
"cake": "./bin/cake"
},
"scripts": {
"test": "node ./bin/cake test"
},
"homepage": "http://coffeescript.org",
"bugs": "https://github.com/jashkenas/coffee-script/issues",
"repository": {
"type": "git",
"url": "git://github.com/jashkenas/coffee-script.git"
},
"devDependencies": {
"uglify-js": ">=1.0.0",
"jison": ">=0.2.0"
}
}