一尘不染

Windows的NPM软件包“ bin”脚本

node.js

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系统上都能很好地工作。在Windows上运行Cucumber.js时,有人报告了一个问题

基本上,该.js文件似乎是通过Windows的JScript解释器(不是Node.js)执行的,并且由于shebang指令而引发语法错误。

我的问题是:设置在UNIX和Windows系统上都可以使用的“二进制”脚本的推荐方法是什么?

谢谢。


阅读 261

收藏
2020-07-07

共1个答案

一尘不染

Windows将忽略shebang行#!/usr/bin/env node,并将根据.js文件关联来执行它。明确使用节点调用脚本

node hello.js

ps。Pedantry:shebangs 不在 POSIX标准中,但是大多数* nix系统都支持它们。


如果为Npm打包项目,请使用package.json中的’bin’字段。然后在Windows上,Npm将.cmd在脚本旁边安装包装器,以便用户可以从命令行执行它

hello

为了使npm创建填充权,脚本必须具有shebang行
#!/usr/bin/env node

2020-07-07