在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