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



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

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

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

在chef或你的包.json中,你有类似的东西

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

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

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

相关内容

最新更新