Build a JavaScript and Node.js project
For Language versions and other build-environment specific information visit our reference pages:
This guide covers build environment and configuration topics specific to JavaScript and Node.js projects. Please make sure to read our Onboarding and General Build configuration guides first.
Specify Node.js versions #
The easiest way to specify Node.js versions is to use one or more of the latest
releases in your .travis.yml:
nodelatest stable Node.js release-
lts/*latest LTS Node.js release -
25latest 25.x release -
24latest 24.x release -
23latest 23.x release -
22latest 22.x release 21latest 21.x release
language: node_js
node_js:
- 7
More specific information on what versions of Node.js are available is in the Environment Reference pages:
If you need more specific control of Node.js versions in your build, use any
version that is installable by nvm. If your .travis.yml contains a version of
Node.js that nvm cannot install, such as 0.4, the job errors immediately.
For a precise list of versions pre-installed on the VM, please consult “Build system information” in the build log.
Specify Node.js versions using .nvmrc #
Optionally, your repository can contain a .nvmrc file in the repository root
to specify which single version of Node.js to run your tests against.
The .nvmrc file is only read when the node_js key in your .travis.yml files
does not specify a nodejs version. When the .nvmrc file is read,
$TRAVIS_NODE_VERSION is set to the nodejs version. See nvm
documentation for more information on
.nvmrc.
Default Build Script #
The default build script for projects using nodejs is:
npm test
In the case where no package.json file is present in the root folder, the default build script is:
make test
Yarn Support #
If yarn.lock exists, the default test command will be yarn test instead of npm test.
Use other Test Suites #
You can tell npm how to run your test suite by adding a line in package.json.
For example, to test using Vows:
"scripts": {
"test": "vows --spec"
},
Use Gulp #
If you already use Gulp to manage your tests, install it and run the default
gulpfile.js by adding the following lines to your .travis.yml:
before_script:
- npm install -g gulp-cli
script: gulp
Dependency Management #
Travis CI uses npm or yarn to install your project dependencies.
Note that there are no npm packages installed by default in the Travis CI environment.
Use npm #
Use a specific npm version #
Add the following to the before_install phase of .travis.yml:
before_install:
- npm i -g npm@version-number
Support for npm ci #
If package-lock.json or npm-shrinkwrap.json exists and your npm version
supports it, Travis CI will use npm ci instead of npm install.
This command will delete your node_modules folder and install all dependencies
as specified in your lock file.
Cache with npm #
npm is now cached by default. In case you want to disable it, please add the following to your .travis.yml:
cache:
npm: false
To explicitly cache your dependencies:
cache: npm
-
This cache’s $HOME/.npm
precisely whennpm ciis the defaultscript` command. (See above.) -
In all other cases, this will cache
node_modules. Note thatnpm installwill still run on every build and will update/install any new packages added to yourpackage.jsonfile.
Even when script is overridden, this shortcut is effective.
Use yarn #
Travis CI detects the use of yarn.
If both package.json and yarn.lock are present in the current
directory, we run the following command instead of
npm install:
yarn --frozen-lockfile
If your Yarn version does not support --frozen-lockfile, we run just yarn.
Note that yarn requires Node.js version 4 or later.
If the job does not meet this requirement, npm install is used
instead.
Use a specific yarn version #
Add the following to the before_install phase of .travis.yml:
before_install:
- curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version version-number
- export PATH="$HOME/.yarn/bin:$PATH"
Cache with yarn #
cache: yarn
will add yarn’s default caching directory (which varies depending on the OS),
as indicated by yarn cache dir.
If your caching needs to include other directives, you can use:
cache:
yarn: true
For more information, refer to Caching documentation.
Use shrinkwrapped git dependencies #
Note that npm install can fail if a shrink-wrapped git dependency pointing to a branch has its HEAD changed.
Ember Apps #
You can build your Ember applications on Travis CI. The default test framework
is Qunit. The following example shows how to build and
test against different Ember versions.
dist: focal
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.com/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 Apps #
You can build your Meteor Apps on Travis CI and test against
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"
More info on testing against laika.
Meteor Packages #
You can also build your Meteor Packages on Travis CI by extending the Node.js configuration.
The following before_install script installs the required dependencies:
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"
Find the source code at travis-ci-meteor-packages.
Build Config Reference #
You can find more information on the build config format for Javascript in our Travis CI Build Config Reference.