如何在travis ci中使用lerna.js?

时间:2018-11-18 01:13:07

标签: travis-ci lerna

我正在使用lerna.js,但我很难找到有关使用Travis设置monorepo的适当文档。我只找到了这个repo和这个blog post,但是它们都是最小且次优的。

我该如何完成以下所有任务?

  1. 在所有程序包中运行测试和测试程序
  2. 在每个程序包中缓存node_modules
  3. 最好为每个程序包声明一个不同的.travis.yml文件

我设法做到了第1点:

env:
  matrix:
    - PACKAGE=contracts

matrix:
  include:
  - stage: tests
    name: "unit tests"
    script:
      - cd packages/contracts
      - npm install && npm run test
  - stage: tests
    name: "unit tests with coverage"
    script:
      - cd packages/contracts
      - npm install && npm run test
    env: SOLIDITY_COVERAGE=true
  - stage: tests
    name: "static tests"
    script:
      - cd packages/contracts
      - npm install && npm run lint

但是,构建过程非常缓慢,因为node_modules不会被缓存。同样,以自上而下的方式声明所有测试是一个相当冗长的过程,我宁愿通过单独的.travis.yml文件自下而上地进行声明。

1 个答案:

答案 0 :(得分:0)

一种相当骇人听闻的方法,但这是Truffle解决此问题的方法:

install:
  - npm install -g lerna
  - npm install -g yarn
  - npm run bootstrap

script:
  - npm run ci

请放心使用此ci脚本。从本质上讲,他们将处理多个子包的复杂性推迟到了bash脚本中,这虽然不错,但对Travis而言却不那么重要。

我最终改用CircleCI,因为它们的语法更直观,更易于使用。