2

我使用了此页面中解释的步骤:http : //nodejs.org/api/addons.html 并使用 node-gyp 工具成功创建了 addon.node 文件。它工作正常,它是一个 c++ 静态库的包装器。

现在我想分发它,我使用以下方法创建了 package.json 文件:

npm 初始化

并使用“npm install .-g”对其进行测试,但它会尝试重新编译模块,这将很难实现,因为它需要我嵌入到 .node 文件中的库,是否可以分发 .node 文件我已经在我的系统中编译了?

如何将编译后的 .node 文件包含到 npm 包中并将其上传到 npm 注册表。我确定我只是一步之遥,但我不知道从哪里开始。

我阅读了有关依赖项的信息,但似乎它适合您的模块依赖于其他模块,而不是您自己的 .node 文件。

谢谢你的帮助。

4

1 回答 1

3

好的,我终于做到了我想要实现的目标,以下是其他人需要的选项:

  1. 为避免编译,您可以创建一个新文件夹并将 package.json 与 .node 文件一起复制到其中,我没有找到这个,只是尝试了一下,它起作用了。
  2. 提供所需的库以允许用户自己编译。

虽然第一个效果很好,但我需要为 windows、linux、mac 等创建一个包。这看起来很奇怪:“如果你在 linux 中使用:npm install xxx-linux”,所以我决定调整我的库允许用户进行模块编译。

为此,我创建了一个“client-dev”安装程序,其中预编译了所需的库,只要包含所需的头文件,然后使用预安装的库和头文件创建要编译的节点模块。我需要在我的网站上添加一个帮助来说明,为了安装模块,用户需要首先使用 apt-get、windows installer 或 mac pkg 安装依赖项。

虽然这对我有用,但我不知道从长远来看这是否可以维护,但我没有找到更好的方法来做到这一点。(最终启发我的目标的唯一链接是一个说:“如果你要使用带有预编译库的节点模块,你会做噩梦”,无论如何......我更喜欢这样做,而不是从头开始在节点 js 中进行完整的实现并维护 java、c#、nodejs、php 等的版本。

于 2012-11-15T18:38:24.750 回答