name: Publish npm package on: push: tags: - "v*" jobs: publish: runs-on: local steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v2 with: bun-version: latest - uses: actions/setup-node@v4 with: node-version: 24 registry-url: "https://registry.npmjs.org" # Stage-only tokens require `npm stage publish` (npm >= 11.15.0). - name: Update npm run: npm install -g npm@^11.15.0 - name: Install dependencies run: bun install --frozen-lockfile - name: Check tag matches package version run: | PACKAGE_VERSION="v$(node -p "require('./package.json').version")" TAG_NAME="${GITHUB_REF_NAME:-${GITHUB_REF#refs/tags/}}" test "$PACKAGE_VERSION" = "$TAG_NAME" - name: Test run: bun test - name: Build run: bun run build - name: Stage publish run: npm stage publish --access public env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}