在Travis ci中找不到全局安装的npm软件包

时间:2018-07-26 09:36:59

标签: javascript node.js npm continuous-integration travis-ci

.travis.yml文件是:

language: node_js
node_js:
- node
env:
  global:
    - secure: "[redacted]"
before_install:
- node ./bin/version_check.js
install:
- npm i
- npm i -g codecov
- npm i -g @octokit/rest
script:
- npm run lint
- npm run build
- npm run ci
deploy:
- skip_cleanup: true
  provider: npm
  email: obfishstudio@gmail.com
  api_key:
    secure: "[redacted]"
  on:
    repo: jjyyxx/JSONSchemaSimulator
    branch: master
- skip_cleanup: true
  provider: script
  script: node ./bin/auto_release.js
  on:
    repo: jjyyxx/JSONSchemaSimulator
    branch: master

在安装阶段,已安装@octokit/rest软件包。但是在第二个部署任务中,当我在./bin/auto_release.js的第一行中需要它时:

const Octokit = require('@octokit/rest')

Travis CI显示Error: Cannot find module '@octokit/rest'

该项目位于https://github.com/jjyyxx/JSONSchemaSimulator

ci报告位于https://travis-ci.org/jjyyxx/JSONSchemaSimulator/builds/408414549

1 个答案:

答案 0 :(得分:2)

所以我以前从未使用过Travis CI,但是我使用的是GitLab CI,实际上情况也是如此。

问题在于,全局软件包将不会合并到作业的缓存中,因此将在install完成后被删除。

对于这种设置,我强烈建议在本地而非全局安装软件包。

这样做的原因之一是执行程序可能用于不同的构建作业,如果全局安装了不同的软件包版本并且相互干扰,这将是非常不幸的。