windows - 适用于 Windows 的 NPM 包 'bin' 脚本

标签 windows node.js posix package npm

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/

相关文章:

windows - 是否可以制作一个不向用户询问任何内容的 Windows 安装程序?

linux - 使用putty连接windows和linux机器

POSIX 中的条件变量

c - 如何使用 sigaction()?结构 sigaction 未定义

c - Windows 等效的 POSIX srandom(...) 和 random() 函数?

在 64 位系统上未调用 Windows 错误检查回调

linux - 点网核心 : cross platform version of GetInvalidFileNameChars?

dom - 你能在 node.js 中操作 XML/HTML 文档吗?

node.js - 通过 crontab 执行 NodeJS 会抛出错误

node.js - 使用 node fluent-ffmpeg 将图像转换为视频