新的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 - 链接丢失。
干杯。
这是我用来完成我最初想法的要点: