GitHub action to automatically publish packages to npm.
Create a new .github/workflows/npm-publish.yml
file:
name: npm-publish
on:
push:
branches:
- master # Change this to your default branch
jobs:
npm-publish:
name: npm-publish
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@master
- name: Set up Node.js
uses: actions/setup-node@master
with:
node-version: 10.0.0
- name: Publish if version has been updated
uses: pascalgn/npm-publish-action@06e0830ea83eea10ed4a62654eeaedafb8bf50fc
with: # All of theses inputs are optional
tag_name: "v%s"
tag_message: "v%s"
commit_pattern: "^Release (\\S+)"
workspace: "."
env: # More info about the environment variables in the README
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Leave this as is, it's automatically generated
NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} # You need to set this in your repo settings
Now, when someone changes the version in package.json
to 1.2.3 and pushes a commit with the message Release 1.2.3
, the npm-publish
action will create a new tag v1.2.3
and publish the package to the npm registry.
These inputs are optional: that means that if you don't enter them, default values will be used and it'll work just fine.
tag_name
: the name pattern of the new tagtag_message
: the message pattern of the new tagcommit_pattern
: pattern that the commit message needs to followworkspace
: custom workspace directory that contains thepackage.json
file
GITHUB_TOKEN
: this is a token that GitHub generates automatically, you only need to pass it to the action as in the exampleNPM_AUTH_TOKEN
: this is the token the action will use to authenticate to npm. You need to generate one in npm, then you can add it to your secrets (settings -> secrets) so that it can be passed to the action. DO NOT put the token directly in your workflow file.
- version-check allows to define custom workflows based on version changes