Skip to content

Minimalist publishing tool for GitHub and npm.

License

Notifications You must be signed in to change notification settings

AssemblyScript/aspublish

Repository files navigation

aspublish

Publish status npm version

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:

npx aspublish

May also obtain just the next version that will be created, if necessary:

npx aspublish --version

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).