在Heroku上进行每次部署后,请避免npm刷新

时间:2012-05-22 08:48:30

标签: node.js heroku npm

我有一个在Heroku上托管的Node.js网站,我用git部署。 我使用了几个在package.json中引用的节点模块;有没有办法阻止Heroku每次部署新版本的代码时“刷新”它们,只要package.json没有改变?

注意:这对于“本机”模块特别有用,它们的编译需要一些时间;对于.js-only模块,我成功将它们从package.json中删除,并在git repo中添加了node_modules /文件夹。

4 个答案:

答案 0 :(得分:5)

我是官方Heroku Node.js Buildpack的维护者。

我们有一个新版本的buildpack in beta,具有缓存支持,专门针对上述用例而设计。您可以在https://github.com/heroku/heroku-buildpack-nodejs/tree/diet#about-this-refactor

了解更多相关信息

最终这将成为Heroku上的默认Node.js buildpack,但如果您现在想要使用它,则需要明确设置BUILPACK_URL配置变量:

heroku config:set BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-nodejs#diet -a my-node-app
git commit -am "fakeout" --allow-empty
git push heroku

答案 1 :(得分:1)

似乎David Dollar最近在heroku-buildpack-nodejs取得了进展。

简而言之:

heroku config:set BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-nodejs

请在此处查看答案: https://stackoverflow.com/a/18535675/1318839

答案 2 :(得分:0)

您可以添加.js和本机npm包,但仍然可以避免“刷新”,(至少是“刷新”的重新下载部分。)

将本机程序包包含在node_modules/目录中。部署到Heroku时,npm install将跳过下载程序包。 npm rebuild也会运行。重新编译本机程序包需要一些时间,但除非你有大量的本机程序包,否则它应该是非常可忍受的。

Sidenote Heroku doc on what Heroku does when you push a nodejs app

旁注: npm rebuild是必需的,因为“node and native code modules after a node upgrade”之间可能发生“神秘失败”。

答案 3 :(得分:0)

克隆Heroku node.js buildpack,并修改它以删除rebuild命令。

该命令目前在此处运行: https://github.com/heroku/heroku-buildpack-nodejs/blob/master/bin/compile#L180,但这必将改变。

您可以通过修改以下命令来运行创建使用您自己的buildpack的应用程序,以匹配您自己的repo:
heroku create --buildpack http://github.com/heroku/heroku-buildpack-nodejs.git

或者使用以下内容更改现有应用的buildpack:
heroku config:add BUILDPACK_URL=git://github.com/heroku/heroku-buildpack-nodejs.git