0

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

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

4

1 回答 1

1

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

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

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

确保将全局 NODE_PATH 添加到初始化脚本中。

node NODE_PATH=/usr/local/lib/node_modules app.js
于 2012-09-17T05:47:40.020 回答