example of using Travis deployment to publish an npm module
ISC License
Example of using Travis CI to automatically publish your packages to npm, using:
.npmrc
NPM_TOKEN
environment variableTo be able to install private packages and to publish on your behalf, Travis CI
needs your npm deploy token. After logging into npm, this token can be found
in your ~/.npmrc
file.
Once you fetch your token, set this as an environment variable in Travis CI called NPM_TOKEN
:
.npmrc
is npm's configuration file, amongst other things: it contains your auth information, and tells the npm
CLI what registry to install from. The following lines in our .travis.yml
generate
an .npmrc
mapping the @bcoe scope to the registry.npmjs.org
registry:
before_install:
- npm i -g makeshift && makeshift -s @bcoe -r registry.npmjs.org
This allows us to install the private @bcoe/super-secret-dependency
dependency.
The .travis.yml
included in this repository automatically publishes to npm, if
tests pass for any git tags that you push to GitHub. Here
are the pertinent lines in the .travis.yml
to support this:
deploy:
provider: npm
email: [email protected]
api_key: $NPM_TOKEN
on:
tags: true
That's all there is to it! note that it references the same NPM_TOKEN
environment variable that
is used to install @bcoe/super-secret-dependency
.
Deciding on what version to bump your package is a hassle; did I add a feature since I last released, was it just patches? This demo uses standard-version to solve this problem.
When making commits, simply follow these commit standards:
patches:
git commit -a -m "fix: fixed a bug in our parser"
features:
git commit -a -m "feat: we now have a parser \o/"
breaking changes:
git commit -a -m "feat: introduces a new parsing library
BREAKING CHANGE: new library does not support foo-construct"
other changes:
You decide, e.g., docs, chore, etc.
When you're ready to have Travis CI publish a new version of your package to npm:
npm run release
, this will look at your commit history, and use standard-versiongit push --follow-tags origin master
, this will push the tag up to GitHubThat's all there is to it, it's literally magic.
To configure Travis CI's deploys to use your private npm Enterprise server only two configuration changes need to be made:
publishConfig.registry
to your package.json
that references your{
"publishConfig": {
"registry": "https://npmo-demo-registry.npmjs.com"
}
}
makeshift
line in your .travis.yml
to point to the new registry:before_install:
- npm i -g makeshift && makeshift -s @bcoe -r https://npmo-demo-registry.npmjs.com