name: Publish on: workflow_dispatch: push: tags: - "v*" permissions: id-token: write contents: write jobs: publish: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: node-version-file: 'package.json' registry-url: https://registry.npmjs.org/ - run: npm install -g npm@latest - run: npm ci - run: npm run build --if-present - name: Parse version and determine release channel id: version run: | VERSION=$(node -p "require('./package.json').version") echo "PACKAGE_VERSION=$VERSION" >> $GITHUB_OUTPUT if [[ $VERSION == *"-alpha."* ]]; then echo "NPM_TAG=alpha" >> $GITHUB_OUTPUT echo "PRERELEASE=true" >> $GITHUB_OUTPUT elif [[ $VERSION == *"-beta."* ]]; then echo "NPM_TAG=beta" >> $GITHUB_OUTPUT echo "PRERELEASE=true" >> $GITHUB_OUTPUT else echo "NPM_TAG=latest" >> $GITHUB_OUTPUT fi - name: Publish new version run: npm publish --tag ${{ steps.version.outputs.NPM_TAG }} - name: Create release uses: softprops/action-gh-release@v2 if: github.ref_type == 'tag' with: generate_release_notes: true prerelease: ${{ steps.version.outputs.PRERELEASE == 'true' }} token: ${{ secrets.GITHUB_TOKEN }}