我在travis上使用grunt-cli来执行测试。它在安装步骤中全局安装,如下所示:
install:
# amongst other install steps
- npm list -g grunt-cli --depth=0 || npm install -g grunt-cli
然后我按照这样的方式缓存它,this question(顺便提一句,我回答):
cache:
directories:
- $(npm config get prefix)/bin/grunt-cli
但是,在下一个版本中,我看到了这一点:tar: /home/travis/.nvm/v0.10.36/bin/grunt-cli: Not found in archive
。原因是,grunt-cli
被缓存在.nvm/v0.10.40/
中,因为它正在测试哪个版本的节点(大多数情况下默认情况下 - 我们只在配置中设置了node_js: 0.10
,所以它安装了最新版本)。但显然travis节点的起始版本是0.10.36。显然,有很多方法,但这似乎是非常天真的行为。我的意思是,travis首先执行缓存,然后nvm安装正确版本的节点,使初始缓存无效。也许他们只是没有考虑缓存全局node_modules。配置中是否有我缺少的东西?或者我应该npm config set prefix
到一个与版本无关的路径并将其添加到我的$PATH
? (或者,使用完全限定版本 - major.minor.patch - 并对缓存目录进行硬编码?)