在Heroku的每个部署之后避免npm刷新

我有一个在Heroku上托pipe的Node.js网站,我用git进行部署。 我使用了几个节点模块,在package.json中引用; 有没有一种方法来防止Heroku'刷新'他们每次部署新版本的代码,只要package.json没有改变?

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

       

网上收集的解决方案 "在Heroku的每个部署之后避免npm刷新"

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

我们有一个testing版buildpack的新版本,它具有caching支持function,专门为您在上面描述的用例而devise。 你可以阅读更多关于它在https://github.com/heroku/heroku-buildpack-nodejs/tree/diet#about-this-refactor

最终,这将成为Heroku上的默认Node.js构build包,但是如果您想现在使用它,则需要明确设置BUILPACK_URL config var:

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 

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

简而言之:

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

在这里看到答案: https : //stackoverflow.com/a/18535675/1318839

你可以添加.js和本地npm包,并且还可以避免“刷新”(至less重新下载“刷新”部分)。

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

Sidenote : Heroku doc介绍当你推送一个nodejs应用程序时,Heroku做什么 。

旁注: npm rebuild是需要的,因为在节点升级之后 “ 节点和本地代码模块之间可能发生神秘故障”。

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

该命令目前运行在这里: https : //github.com/heroku/heroku-buildpack-nodejs/blob/master/bin/compile#L180 ,但是这一定会改变。

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

或者用以下方式更改现有应用程序的构build包:
heroku config:add BUILDPACK_URL=git://github.com/heroku/heroku-buildpack-nodejs.git