GitHub Actions: publish a JavaScript package to NPM & GitHub Releases
Solution
Set NPM_TOKEN
in Repository Secrets (see https://github.com/org/repo/settings/secrets/actions
)
Npm:
# .github/workflows/publish.yml
name: Publish package on npm & GitHub
on:
push:
tags:
- "*.*.*"
jobs:
github-release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- uses: ncipollo/release-action@v1.14.0
with:
artifacts: filename.js
npm-publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
registry-url: https://registry.npmjs.org/
- run: npm ci
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
Yarn:
# .github/workflows/publish.yml
name: Publish package on npm & GitHub
on:
push:
tags:
- "*.*.*"
jobs:
github-release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- uses: ncipollo/release-action@v1.14.0
with:
artifacts: filename.js
npm-publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
registry-url: https://registry.npmjs.org/
- run: yarn install --immutable
- run: yarn build
- run: yarn publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}