在travis.yml中包装脚本行

时间:2017-11-17 19:57:46

标签: node.js npm yaml travis-ci

我有这个.travis.yml文件:

language: node_js
node_js:
  - '9'
  - '8'
  - '7'
  - '6'
env:
  - CXX=g++-4.8
addons:
  apt:
    sources:
      - ubuntu-toolchain-r-test
    packages:
      - g++-4.8

before_install: 'if [[ `npm -v` != 4* ]]; then npm i -g npm@4; fi'

install:
  - npm install --silent --no-optional > /dev/null 2>&1

script: 'rm -rf node_modules && npm cache clean && npm install istanbul --silent > /dev/null 2>&1 && \
npm link -f --silent > /dev/null 2>&1 && npm link suman -f --silent  > /dev/null 2>&1 && \
suman test/src/dev/node/injection.test.js'

我猜测脚本行格式不正确。我在Travis上得到了这个错误:

The command "rm -rf node_modules && npm cache clean && npm install istanbul --silent > /dev/null 2>&1 && \ npm link -f --silent > /dev/null 2>&1 && npm link suman -f --silent  > /dev/null 2>&1 && \ suman test/src/dev/node/injection.test.js" exited with 127.

有谁知道脚本命令格式正确吗?我无法理解。

2 个答案:

答案 0 :(得分:1)

看起来YAML转换正在咬你,并且新行和\的处理方式与您假设的不同。您可以通过|启动它来放入未解释的多行块。如果您有兴趣,请查看详细信息:http://yaml.org/spec/1.2/spec.html#Block

language: node_js
node_js:
  - '9'
  - '8'
  - '7'
  - '6'
env:
  - CXX=g++-4.8
addons:
  apt:
    sources:
      - ubuntu-toolchain-r-test
    packages:
      - g++-4.8

before_install: 'if [[ `npm -v` != 4* ]]; then npm i -g npm@4; fi'

install:
  - npm install --silent --no-optional > /dev/null 2>&1

script: |
    rm -rf node_modules && npm cache clean && npm install istanbul --silent > /dev/null 2>&1 && \
    npm link -f --silent > /dev/null 2>&1 && npm link suman -f --silent  > /dev/null 2>&1 && \
    suman test/src/dev/node/injection.test.js

答案 1 :(得分:0)

看起来OP中的.travis.yml文件是错误的(我不确切知道为什么),因为当我将其更改为:

language: node_js
node_js:
  - '9'
  - '8'
  - '7'
  - '6'
env:
  - CXX=g++-4.8
addons:
  apt:
    sources:
      - ubuntu-toolchain-r-test
    packages:
      - g++-4.8

before_install: 'if [[ `npm -v` != 4* ]]; then npm i -g npm@4; fi'
install:
  - 'npm install --silent --no-optional > /dev/null 2>&1'
script: 'rm -rf node_modules && npm cache clean && npm install istanbul --silent > /dev/null 2>&1 && npm link -f --silent > /dev/null 2>&1 && npm link suman -f --silent  > /dev/null 2>&1 && suman test/src/dev/node/injection.test.js'
after_script: 'npm install -g coveralls && cat coverage/lcov.info | coveralls'
notifications:
  email: false

现在又恢复了工作。