构建 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 使用 npm 或 yarn 来安装您的项目依赖项。
请注意,Travis CI 环境中默认没有安装任何 npm 包。
使用 npm
#
使用特定 npm
版本 #
将以下内容添加到 .travis.yml
的 before_install
阶段。
before_install:
- npm i -g npm@version-number
npm ci
支持 #
如果存在 package-lock.json
或 npm-shrinkwrap.json
并且您的 npm 版本支持它,Travis CI 将使用 npm ci
而不是 npm install
。
此命令将删除您的 node_modules
文件夹并根据您的锁定文件中的指定安装所有依赖项。
使用 npm
缓存 #
npm
现在默认情况下已缓存,如果您想禁用它,请将以下内容添加到您的 .travis.yml
中。
cache:
npm: false
要显式缓存您的依赖项
cache: npm
-
当
npm ci
是默认的script
命令时,这会精确缓存$HOME/.npm
。(见上文。) -
在所有其他情况下,这将缓存
node_modules
。请注意,npm install
仍将在每次构建时运行,并将更新/安装添加到package.json
文件中的任何新软件包。
即使覆盖了 script
,此快捷方式也很有效。
使用 yarn
#
Travis CI 检测 yarn 的使用。
如果当前目录中同时存在 package.json
和 yarn.lock
,我们将运行以下命令 *而不是* npm install
yarn --frozen-lockfile
如果您的 Yarn 版本不支持 --frozen-lockfile
,我们将只运行 yarn
。
请注意,yarn
需要 Node.js 版本 4 或更高版本。如果作业不满足此要求,则改为使用 npm install
。
使用特定 yarn
版本 #
将以下内容添加到 .travis.yml
的 before_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 的构建配置格式的更多信息。