Publishing on npm
npm is the Node.js package manager, enabling developers to fetch and publish Node.js packages; project teams can use their own npm credentials to publish packages (locally or via CI), or ask firstname.lastname@example.org to support setting up the release process.
To date, the Foundation has provisioned:
- A FINOS NPMJS Organisation, that is used as a directory of all NPM packages that are released from a FINOS hosted project or working group.
- A FINOS Admin user, which can be used to publish NPM packages to NPMJS, if a Project Lead is unable to create a personal account to do so
- A Symphony Software Foundation NPMJS Organisation, that houses all published Node.js packages.
Using package scoping
All npm packages released under the FINOS npm organisation should define the @finos scope, in order to point to the npm organisation; if you're not familiar, read more about scoped packages.
There are some situations where it is not possible to specify the scope of a package, since scoping maybe used for behaviour-related aspects of the application; for example when defining typescript typings.
Semantic release is a Node.js library that automates the software release process by parsing commit messages; on every commit, semantic release is executed by Travis CI and - based on the commit message - decides to trigger a release or not; release managers can use commitizen (see image below) to simplify their commit process; simply type
npm install -g commitizen and use
git cz (instead of
git commit) to commit your changes.
It is worth noting that release managers have the opportunity squash and merge using GitHub merge UI, in order to choose the right commit messages and keep commit log clean.
When a release is performed, your CI environment will do the following:
- Run all build and validation tasks defined by your build descriptor (ie
- Create a GitHub tag, labelled after the version specified in
- Include a
CHANGELOG.mdfile with a recap of all commits added since last release
- Publish (on npmjs.org/org/finos) an updated version of the NPM package defined by
- Include a
- Increase the the version specified in
package.jsonand push changes to
Travis CI must be configured with the following environment variables:
GH_TOKEN, used to create tags on GitHub
NPM_TOKEN, used to publish the npm package
Release configurations can also be shared across npm projects.
Semantic release allows additional configurations to customise the release flow.