Minimalist publishing tool for GitHub and npm. Generates a changelog, makes a GitHub release of it, and publishes the package to npm.
Usage
Set GITHUB_TOKEN and NPM_TOKEN as environment variables.
To create a release on GitHub and publish the package to npm:
May also obtain just the next version that will be created, if necessary:
The returned version is empty if no release has been triggered.
Note that npm postversion etc. scripts will also run normally, and that the version number in package.json is irrelevant (may just be 0.0.0).
Commit format
Prefix either the commit subject or body:
| Prefix | Release type | Pre 1.0.0 | Post 1.0.0 |
|---|---|---|---|
breaking: |
Major | 0.1.0 -> 0.2.0 |
1.0.0 -> 2.0.0 |
feat: |
Minor | 0.1.0 -> 0.1.1 |
1.0.0 -> 1.1.0 |
fix: |
Patch | 0.1.0 -> 0.1.1 |
1.0.0 -> 1.0.1 |
Except a few aliases and abbreviations, other prefixes will not trigger a new version / release.
Example
As a step during GitHub Actions:
- name: Make release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} run: | VERSION=$(npx aspublish --version) if [ -z "$VERSION" ]; then echo "Changes do not trigger a release" else echo "Publishing new version: $VERSION" npx aspublish fi
Or, if obtaining the version upfront is not necessary:
- name: Make release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} run: npx aspublish
See this repository's publish.yml for a complete configuration (replace node bin/aspublish.js with npx aspublish).