当前位置: 首页 > 面试题库 >

Windows的NPM软件包“ bin”脚本

井礼骞
2023-03-14
问题内容

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系统上都可以使用的“二进制”脚本的推荐方法是什么?

谢谢。


问题答案:

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



 类似资料:
  • 问题内容: 是否存在任何npm选项来在安装软件包时禁用安装后脚本?还是要重写package.json中的任何字段? 问题答案: 仅禁用脚本是不可能的。但是,您可以使用以下命令禁用所有脚本: 正如注释中提到的delbertooo一样,这也会禁用依赖项的脚本。

  • 问题内容: 我需要从Windows计算机上运行的ANT脚本创建RPM软件包。此程序包必须包含构建的结果类以及其他一些其他资源。 我猜应该在某个地方可以从命令行调用一些程序来创建此程序包。 我之所以要在Windows下执行此操作,是因为我们有一个脚本可以为几个不同的平台构建安装程序,并且所有内容都已为Windows配置,因此我想避免将所有内容迁移到Linux的麻烦。 您知道如何实现吗? 编辑:我已经

  • 问题内容: 我正在尝试安装npm软件包(node-xmpp-server),但安装失败。以前,当我尝试安装全局安装而不是本地安装的软件包时,现在却根本没有安装。 请帮帮我。 npm install node-xmpp-server 错误是:npm ERR!errno -4048 npm错误!Windows_NT 6.3.9600 npm错误!argv“ c:\ Program Files \ no

  • 问题内容: 因此,我找到了安装cx_Oracle的帮助,但仍然无法解决。我从oracle下载了最新的即时客户端,并将ORACLE_HOME设置为提取文件的位置(直接使用,并在ORACLE_HOME值和文件之间使用bin文件夹),但是easy_install在运行setup.py时弹出错误,说可以。 t找到Oracle包含文件。我确实注意到文件夹中只有11g dll,我是否需要所有3个驱动程序才能完

  • 问题内容: 有人可以告诉我在哪里可以找到使用我安装的Node.js模块 吗? 问题答案: 全球图书馆 您可以运行以查看安装了哪些全局库以及它们的位置。使用用于显示人的路截断输出。如果您只想显示主软件包而不显示与其一起安装的子软件包(可以使用),则可以使用- 将显示所有软件包并仅获取全局安装的软件包,只需添加-g ie即可。 在Unix系统上,它们通常放在全局中或在全局中安装。如果将环境变量设置为此

  • 问题内容: 当我尝试使用安装npm时,出现以下错误: E:无法找到软件包npm 为什么找不到npm?我正在使用Debian 9并且已经运行了 问题答案: 从官方的Node.js文档中: Node.js软件包在Debian Sid(不稳定),Jessie(测试)和Wheezy(wheezy-backports)的官方存储库中也以“ nodejs”的形式提供。 它仅安装nodejs二进制文件。 因此,