如何快速部署使用慢速构建二进制模块的节点应用程序?

时间:2012-09-06 00:42:10

标签: node.js npm

我有一些应用程序使用了奇妙的node-sqlite3模块。它的一个缺点是它在安装时从源构建sqlite。我部署的方式更加复杂;我正在使用厨师,它为每个部署提供了一个干净的源代码树。然后,我在每个应用程序根目录下执行npm install。对于大多数事情来说这不是问题,因为它只是命中本地缓存。但对于sqlite3,它为模块引用的每个位置构建一个全新的副本;在我的情况下4次!什么需要几秒钟现在需要几分钟,这在测试暂存环境中的新更改时尤其糟糕。

原则上,我应该能够为模块的给定版本执行一次构建,对其进行缓存,并在部署时只复制或链接二进制文件。有没有人做过类似的事情?那里潜藏着恶魔吗?

1 个答案:

答案 0 :(得分:1)

我们在Chef上有与Node.js类似的设置,并选择全局安装sqlite3。 Node.js样式指南建议不要这样做,但似乎最好每次部署时重新编译sqlite3几分钟:

在chef或package.json中你有类似

的东西
(sudo) npm install -g sqlite3@2.1.x

确保将全局NODE_PATH添加到init脚本中。

node NODE_PATH=/usr/local/lib/node_modules app.js