在Heroku上缓存Node.js git依赖项

时间:2014-01-22 11:55:10

标签: node.js heroku npm

新的Node.js Heroku构建包(https://blog.heroku.com/archives/2013/12/10/new-node-buildpack)缓存node_modules

#4104开始,Git依赖项现在始终更新。这使得缓存对Git依赖无用。

似乎避免这种情况的唯一方法是将提交哈希附加到依赖项。

E.g。 "mincer": "git://github.com/vjpr/mincer.git#35d9768"

我在开发过程中有大约5个npm link模块。它们包括尚未准备好公共分发的公共模块,私有模块和公共模块的分支。

所以我正在看的是创建一个预提交钩子,它将使用最新的提交哈希值(package.json)更新git rev-parse HEAD中的每个git依赖项。

感觉类似于幕后的git submodules

预提交挂钩将使用npm install --link --save GIT_URL#SHA修改package.json

在实施钩子之前,我想知道是否有更简单的替代方案? (除了提交我不是我的粉丝的node_modules之外。)

我想到的一些替代方案:

  • 使用自动发布挂钩将公共模块推送到Travis CI。 (如果我只是等待拉动请求,我认为将公共模块的分支发布到npm是愚蠢的。)

  • 使用GemFury - 托管的npm注册表(9个月是昂贵的。不确定它是否代理了对主npm注册表的请求,如果它找不到它们。它必须成为{的主要注册表{1}}缓存工作。)

  • 使用nodejitsu private registrys。

  • 从单独分支上的.npmrc移除node_modules,并为每次部署重新定位。 (看起来单调乏味并打包.gitignore ed repos会增加复杂性。)

  • npm link。新的Heroku buildpack尊重shrinkwrap。它似乎与npm shrinkwrap无关。

    更新:Shrinkwrap不适用于npm link repos - 链接丢失。

干杯。


这是我用来完成我最初想法的要点:

https://gist.github.com/vjpr/2783a2745c614acc5d75

0 个答案:

没有答案