A better
npm publish
- Ensures you are publishing from the
master
branch - Ensures the working directory is clean and that there are no unpulled changes
- Reinstalls dependencies to ensure your project works with the latest dependency tree
- Runs the tests
- Bumps the version in package.json and npm-shrinkwrap.json (if present) and creates a git tag
- Publishes the new version to npm, optionally under a dist-tag
- Pushes commits and tags to GitHub
$ npm install --global np
$ np --help
Usage
$ np <version>
Version can be:
patch | minor | major | prepatch | preminor | premajor | prerelease | 1.2.3
Options
--any-branch Allow publishing from any branch
--skip-cleanup Skips cleanup of node_modules
--yolo Skips cleanup and testing
--tag Publish under a given dist-tag
Examples
$ np patch
$ np 1.0.2
$ np 1.0.2-beta.3 --tag=beta
You can use any of the test/version/publish related npm lifecycle hooks in your package.json to add extra behavior.
For example, here we build the documentation before tagging the release:
{
"name": "my-awesome-package",
"scripts": {
"preversion": "./build-docs"
}
}
Set the sign-git-tag
npm config to have the Git tag signed:
$ npm config set sign-git-tag true
You can use np
for packages that aren't publicly published to npm (perhaps installed from a private git repo).
Set "private": true
in your package.json
and the publish step will be skipped. All other steps
including versioning and pushing tags will still be completed.
MIT © Sindre Sorhus