发布到 npmjs.com 时,使用 nodejs 模块分发二进制可执行文件

Phi*_*hil 2 node.js npm node-modules

我有一个可执行文件myutil.exe,我从 Nodejs 模块调用它来执行一些功能。我希望将其打包,将我的 NodeJS 模块发布到 npmjs.com,并且在这个 Windows 平台上使用时,可执行文件应该是此 NodeJS 库的一部分,因为我的 NodeJS 代码调用可执行文件来执行功能。我已经从 nodejs 运行了这个命令行二进制文件。

如何做到这一点以及如何最好地将这个可执行二进制文件包含在其中?它应该以某种方式托管在包之外吗?

另请注意,这只是一个限制,目前它必须是 Windows 上的可执行文件,或者由于其内部代码的性质,它必须是 Linux 系统上可运行的二进制文件,不能是 DLL/库。稍后也许我可以将其一些代码移至 DLL/库中。

las*_*2d2 7

在您的文件中提供一个bin字段package.json,该字段是命令名到本地文件名的映射。安装时,npm 会将该文件符号链接prefix/bin到全局安装或./node_modules/.bin/本地安装。

例如,如果您在 中包含此命令package.json,并且全局安装了您的软件包,则该命令npmputty将在 PATH 中可用。

"bin": {
  "npmputty": "./bin/putty.exe"
},
Run Code Online (Sandbox Code Playgroud)

如果您不想在包中发布此可执行文件,可以实现一个postinstall脚本来从 github.com 等地方下载它。

{
  "scripts" : {
    "postinstall" : "scripts/download_from_github.js"
  }
}
Run Code Online (Sandbox Code Playgroud)