节点js模块的分布

时间:2012-11-14 04:48:47

标签: node.js package npm

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

现在我想分发这个,我使用:

创建了package.json文件

npm init

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

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

我读到了依赖关系,但似乎它适用于你的模块依赖于其他模块,而不是你自己的.node文件。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

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

  1. 为了避免编译,您可以创建一个新文件夹并将package.json与.node文件一起复制,我没有找到它,只是尝试过并且有效。
  2. 提供所需的库以允许用户自己编译。
  3. 虽然第一个工作得很好,但我需要为windows,linux,mac等创建一个包。这看起来很奇怪:“如果你在linux上使用:npm install xxx-linux”,所以我决定调整我的库以允许用户进行模块编译。

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

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