我有一些使用神奇的node-sqlite3模块的应用程序。它的一个缺点是在安装时从源代码构建sqlite。我的部署方式使这一点变得复杂;我使用chef,它为我提供了一个干净的源码树。然后,我在每个应用程序根目录下执行一个npm install。这对于大多数事情来说都不是问题,因为它只会命中本地缓存。但对于sqlite3,它为模块引用的每个位置构建了一个全新的副本;在我的例子中是4次!需要几秒钟的事情现在需要几分钟,这在测试阶段环境中的新更改时尤其糟糕。
原则上,我应该能够为给定版本的模块进行一次构建,缓存它,并在部署时只复制或链接二进制文件。有没有人做过类似的事情?有没有恶魔潜伏在这里?
发布于 2012-09-17 13:47:40
我们在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.jshttps://stackoverflow.com/questions/12291563
复制相似问题