【问题标题】:Distribute a binary executable with a nodejs module when publishing to npmjs.com发布到 npmjs.com 时分发带有 nodejs 模块的二进制可执行文件
【发布时间】:2021-05-31 12:29:48
【问题描述】:

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

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

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

【问题讨论】:

    标签: node.js npm node-modules


    【解决方案1】:

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

    例如,如果你在 package.json 中有这个,并且全局安装了你的包,那么命令 npmputty 将在 PATH 中可用。

    "bin": {
      "npmputty": "./bin/putty.exe"
    },
    

    如果您不想在包中发布此可执行文件,可以实现 postinstall script 以从 github.com 之类的地方下载它。

    {
      "scripts" : {
        "postinstall" : "scripts/download_from_github.js"
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 2020-12-03
      • 2020-06-16
      • 1970-01-01
      • 2016-02-25
      相关资源
      最近更新 更多