在Heroku上cachingNode.js git依赖关系

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

从#4104开始, Git依赖关系现在总是被更新。 这使得caching对Git依赖关系无用。

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

例如"mincer": "git://github.com/vjpr/mincer.git#35d9768"

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

所以我正在创build一个预先提交的钩子,它将更新package.json每个git依赖与最新的提交哈希(即git rev-parse HEAD )。

这与git submodules幕后的感觉相似。

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

在执行钩子之前,我想知道是否有更简单的select? (除了提交我不node_modules )。

我想到的一些替代scheme:

  • 使用自动发布钩子将公共模块推送到Travis CI。 (我认为如果我只是在等待pull请求才能发布一个公共模块的分支到npm将是愚蠢的。)

  • 使用GemFury – 托pipenpmregistry(9美元月是昂贵的。不知道它是否代理请求主npmregistry,如果它找不到它们。它将不得不作为主要registry在.npmrc的caching工作。)

  • 使用nodejitsu私人registry。

  • 从单独的分支上的.gitignore删除node_modules ,并为每个部署重新设置node_modules 。 (看起来很乏味,把npm link包装起来会增加复杂性)。

  • npm shrinkwrap 。 新的Heroku buildpack尊敬收缩包装。 它似乎没有与npm link打好。

    更新:收缩包装与npm linked回购不起作用 – 链接丢失。

干杯。


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

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