Read this in other languages: English, 日本語.
This is a GitHub Actions
to check package version before publish npm.
Running GitHub Action
Updated version of package.json and commit (if branch is not protected)
e.g. .github/workflows/check_version.yml
on: push
name: Check package version
jobs:
checkVersion:
name: Check package version
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Use this GitHub Action
- name: Check package version
uses: technote-space/package-version-check-action@v1
with:
BRANCH_PREFIX: release/
e.g. .github/workflows/release.yml
on:
push:
tags:
- 'v*'
name: Publish Package
jobs:
release:
name: Publish Package
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
# Use this GitHub Action
- name: Check package version
uses: technote-space/package-version-check-action@v1
with:
COMMIT_DISABLED: 1
- name: Install Package dependencies
run: yarn install
- name: Build
run: yarn build
- name: Publish
run: |
npm config set //registry.npmjs.org/:_authToken=$NPM_AUTH_TOKEN
npm publish
env:
NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
Branch name prefix.
default: ''
e.g. release/
Whether commit is disabled.
default: ''
Commit message of update package version commit.
default: 'feat: update package version'
Package file name.
default: 'package.json'
Package directory.
default: ''
Prefix for test tag.
default: ''
e.g. 'test/'
Specify next version.
default: ''
e.g. 'v1.2.3'
eventName: action | condition |
---|---|
push: * | condition1 |
release: published | condition1 |
pull_request, pull_request_target: opened, reopened, synchronize | condition2 |
created: * | condition3 |
v1.2.3
)${BRANCH_PREFIX}${tag}
v1.2.3
)release/v1.2.3
${BRANCH_PREFIX}${tag}
v1.2.3
)release/v1.2.3
v1.2.3
)If you forget to update the package.json version, publishing the npm package will fail.
If you are invoking an action by pushing a tag, you have to do following steps again.
This is very troublesome.
This GitHub Action
updates the version in package.json based on the tag name automatically.
So you don't have to worry about the version in package.json.
This action also commits the change if the branch is not protected.
If the branch is protected, this action just update the version in package.json.
Commit is valid when pushing to default branch with tag
or branch starting with ${BRANCH_PREFIX}
.
The GITHUB_TOKEN
that is provided as a part of GitHub Actions
doesn't have authorization to create any successive events.
So it won't spawn actions which triggered by push.
This can be a problem if you have branch protection configured.
If you want to trigger actions, use a personal access token instead.
Add input to use ACCESS_TOKEN
instead of GITHUB_TOKEN
.
e.g. .github/workflows/check_version.yml
on: push
name: Check package version
jobs:
checkVersion:
name: Check package version
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Use this GitHub Action
- name: Check package version
uses: technote-space/package-version-check-action@v1
with:
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
BRANCH_PREFIX: release/
Tag name format must be Semantic Versioning.