GitHub Actions: NPM Package Release Workflow
Table of Contents
Section titled “Table of Contents”release gha example
Section titled “release gha example”name: Release
on: push: branches: ["main"]
permissions: contents: read
jobs: release: # prevent this action from running on forks if: github.repository == 'clintonsteiner/rehype-prism' permissions: contents: write pull-requests: read runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "22.x" registry-url: "https://registry.npmjs.org" - name: Install dependencies run: npm ci - name: Extract version from package.json uses: sergeysova/jq-action@v2 id: version with: cmd: "jq .version package.json -r" - name: Get latest tag uses: actions-ecosystem/action-get-latest-tag@v1 id: get-latest-tag - name: Publish GitHub Release uses: release-drafter/release-drafter@v6 if: ${{ contains(steps.get-latest-tag.outputs.tag, steps.version.outputs.value) == false }} with: version: ${{ steps.version.outputs.value }} publish: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Publish to NPM if: ${{ contains(steps.get-latest-tag.outputs.tag, steps.version.outputs.value) == false }} run: npm publish --access=public env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}