我使用了本页中介绍的步骤:http://nodejs.org/api/addons.html并使用node-gyp工具成功创建了一个addon.node文件。它运行正常,它是c ++静态库的包装。
现在我想分发这个,我使用:
创建了package.json文件npm init
并使用“npm install.-g”对其进行测试,但它尝试重新编译难以实现的模块,因为它需要我嵌入.node文件的库,是否可以分发我已在系统中编译的.node文件?
如何将已编译的.node文件包含到npm包中并将其上传到npm注册表。我确信我只是迈出了一步,但我不知道从哪里开始。
我读到了依赖关系,但似乎它适用于你的模块依赖于其他模块,而不是你自己的.node文件。
感谢您的帮助。
答案 0 :(得分:3)
虽然第一个工作得很好,但我需要为windows,linux,mac等创建一个包。这看起来很奇怪:“如果你在linux上使用:npm install xxx-linux”,所以我决定调整我的库以允许用户进行模块编译。
为此,我创建了一个“client-dev”安装程序,它具有预编译所需的库,只要需要包含头,然后使用预安装的库和头创建要编译的节点模块。我需要在我的网站上添加一个帮助来解释一下,为了安装模块,用户需要先使用apt-get,windows installer或mac pkg安装依赖项。
虽然这对我有用,但我不知道从长远来看这是否可以维持,但我没有找到更好的方法来做到这一点。 (最终启发我的目标的唯一链接是一句话:“如果你要使用具有预编译库的节点模块,你将会做噩梦”,无论如何......我更喜欢它而不是从头开始在节点js中完整实现并维护java,c#,nodejs,php等的版本