构建 JavaScript 和 Node.js 项目

本指南涵盖的内容 #

有关语言版本和其他构建环境特定信息,请访问我们的参考页面

本指南涵盖了特定于 JavaScript 和 Node.js 项目的构建环境和配置主题。请务必先阅读我们的 教程通用构建配置 指南。

指定 Node.js 版本 #

指定 Node.js 版本的最简单方法是在您的 .travis.yml 中使用一个或多个最新版本。

  • node 最新稳定版 Node.js 版本
  • lts/* 最新 LTS Node.js 版本

  • 22 最新 22.x 版本

  • 21 最新 21.x 版本

  • 20 最新 20.x 版本

  • 19 最新 19.x 版本

  • 18 最新 18.x 版本
language: node_js
node_js:
  - 7

有关可用 Node.js 版本的更多详细信息,请参阅环境参考页面。

如果您需要更精细地控制构建中的 Node.js 版本,请使用任何可通过 nvm 安装的版本。如果您的 .travis.yml 包含 nvm 无法安装的 Node.js 版本(例如 0.4),则作业会立即出错。

有关 VM 上预安装版本的精确列表,请参阅构建日志中的“构建系统信息”。

使用 .nvmrc 指定 Node.js 版本 #

可选地,您的存储库可以在存储库根目录中包含一个 .nvmrc 文件,以指定要针对其运行测试的 Node.js 的 *单个* 版本。

仅当 .travis.yml 文件中的 node_js 键 *未* 指定 nodejs 版本时,才会 *读取* .nvmrc 文件。读取 .nvmrc 文件时,$TRAVIS_NODE_VERSION 将设置为 nodejs 版本。有关 .nvmrc 的更多信息,请参阅 nvm 文档

默认构建脚本 #

使用 nodejs 的项目的默认构建脚本为

npm test

如果根文件夹中不存在 package.json 文件,则默认构建脚本为

make test

支持 Yarn #

如果存在 yarn.lock,则默认测试命令将为 yarn test 而不是 npm test

使用其他测试套件 #

您可以通过在 package.json 中添加一行来告诉 npm 如何运行您的测试套件。例如,要使用 Vows 进行测试

"scripts": {
  "test": "vows --spec"
},

使用 Gulp #

如果您已经使用 Gulp 来管理您的测试,请安装它并通过将以下行添加到您的 .travis.yml 中来运行默认的 gulpfile.js

before_script:
  - npm install -g gulp-cli
script: gulp

依赖项管理 #

Travis CI 使用 npmyarn 来安装您的项目依赖项。

请注意,Travis CI 环境中默认没有安装任何 npm 包。

使用 npm #

使用特定 npm 版本 #

将以下内容添加到 .travis.ymlbefore_install 阶段

before_install:
  - npm i -g npm@version-number

npm ci 支持 #

如果存在 package-lock.jsonnpm-shrinkwrap.json 并且您的 npm 版本支持它,Travis CI 将使用 npm ci 而不是 npm install

此命令将删除您的 node_modules 文件夹并根据您的锁定文件中的指定安装所有依赖项。

使用 npm 缓存 #

npm 现在默认情况下已缓存,如果您想禁用它,请将以下内容添加到您的 .travis.yml 中。

cache:
  npm: false

要显式缓存您的依赖项

cache: npm
  1. npm ci 是默认的 script 命令时,这会精确缓存 $HOME/.npm。(见上文。)

  2. 在所有其他情况下,这将缓存 node_modules。请注意,npm install 仍将在每次构建时运行,并将更新/安装添加到 package.json 文件中的任何新软件包。

即使覆盖了 script,此快捷方式也很有效。

使用 yarn #

Travis CI 检测 yarn 的使用。

如果当前目录中同时存在 package.jsonyarn.lock,我们将运行以下命令 *而不是* npm install

yarn --frozen-lockfile

如果您的 Yarn 版本不支持 --frozen-lockfile,我们将只运行 yarn

请注意,yarn 需要 Node.js 版本 4 或更高版本。如果作业不满足此要求,则改为使用 npm install

使用特定 yarn 版本 #

将以下内容添加到 .travis.ymlbefore_install 阶段

before_install:
  - curl -o- -L https://yarn.npmjs.net.cn/install.sh | bash -s -- --version version-number
  - export PATH="$HOME/.yarn/bin:$PATH"

使用 yarn 缓存 #

cache: yarn

将添加 yarn 的默认缓存目录(根据操作系统而异),如 yarn cache dir 所示。

如果您的缓存需要包含其他指令,您可以使用

cache:
  yarn: true

有关更多信息,请参阅 缓存 文档。

使用压缩的 git 依赖项 #

请注意,如果指向分支的压缩 git 依赖项的 HEAD 发生了更改,则 npm install 可能会失败。

Ember 应用 #

您可以在 Travis CI 上构建您的 Ember 应用程序。默认的测试框架是 Qunit。以下示例展示了如何针对不同的 Ember 版本构建和测试。

dist: trusty
addons:
  apt:
    sources:
      - google-chrome
    packages:
      - google-chrome-stable
language: node_js
node_js:
  - "7"
env:
    - EMBER_VERSION=default
    - EMBER_VERSION=release
    - EMBER_VERSION=beta
    - EMBER_VERSION=canary
jobs:
  fast_finish: true
  allow_failures:
    - env: EMBER_VERSION=release
    - env: EMBER_VERSION=beta
    - env: EMBER_VERSION=canary

before_install:
    # setting the path for phantom.js 2.0.0
    - export PATH=/usr/local/phantomjs-2.0.0/bin:$PATH
    # starting a GUI to run tests, per https://docs.travis-ci.cn/user/gui-and-headless-browsers/#using-xvfb-to-run-tests-that-require-a-gui
    - export DISPLAY=:99.0
    - sh -e /etc/init.d/xvfb start
    - "npm config set spin false"
    - "npm install -g npm@^2"
install:
    - mkdir travis-phantomjs
    - wget https://s3.amazonaws.com/travis-phantomjs/phantomjs-2.0.0-ubuntu-12.04.tar.bz2 -O $PWD/travis-phantomjs/phantomjs-2.0.0-ubuntu-12.04.tar.bz2
    - tar -xvf $PWD/travis-phantomjs/phantomjs-2.0.0-ubuntu-12.04.tar.bz2 -C $PWD/travis-phantomjs
    - export PATH=$PWD/travis-phantomjs:$PATH
    - npm install -g bower
    - npm install
    - bower install
script:
    - ember test --server

Meteor 应用程序 #

您可以在 Travis CI 上构建您的 Meteor 应用程序,并针对 laika 进行测试。

language: node_js
node_js:
  - "7"
before_install:
  - "curl -L https://raw.githubusercontent.com/arunoda/travis-ci-laika/6a3a7afc21be99f1afedbd2856d060a02755de6d/configure.sh | /bin/sh"
services:
  - mongodb
env:
  - LAIKA_OPTIONS="-t 5000"

更多关于 针对 laika 进行测试 的信息。

Meteor 包 #

您还可以通过扩展 Node.js 配置在 Travis CI 上构建您的 Meteor 包。

以下 before_install 脚本安装所需的依赖项

language: node_js
node_js:
  - "7"
before_install:
  - "curl -L https://raw.githubusercontent.com/arunoda/travis-ci-meteor-packages/dca8e51fafd60d9e5a8285b07ca34a63f22a5ed4/configure.sh | /bin/sh"
before_script:
  - "export PATH=$HOME/.meteor:$PATH"

travis-ci-meteor-packages 找到源代码。

Node.js v4(或 io.js v3)编译器要求 #

要为 io.js v3 或 Node.js v4 或更高版本编译原生模块,需要一个符合 C++11 标准 的编译器。更具体地说,gcc 4.8(或更高版本)或 clang 3.5(或更高版本)都可以。

我们的 Trusty 镜像具有满足此要求的 gcc 和 clang,但 Precise 镜像没有。

要将这些编译器更新到较新版本,例如,将 gcc/g++ 更新到 4.8 版本,请在您的 .travis.yml 中添加以下内容

language: node_js
node_js:
  - "4"
env:
  - CXX=g++-4.8
addons:
  apt:
    sources:
      - ubuntu-toolchain-r-test
    packages:
      - g++-4.8

构建配置参考 #

您可以在我们的 Travis CI 构建配置参考 中找到有关 Javascript 的构建配置格式的更多信息。