name: Publish Release on: release: types: [published] permissions: # we use a personal access token to push the release branch id-token: write # required for provenance/signed releases on npm jobs: publish: name: Publish Release runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 # we want to push the release branch later token: ${{ secrets.GH_TOKEN }} - name: Install pnpm uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 - name: Set node version to 24 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: 24 cache: 'pnpm' - name: Install deps run: pnpm install --frozen-lockfile - name: Gather release information run: | RELEASE_VERSION=$(jq -r '.version' package.json) echo "RELEASE_VERSION=$RELEASE_VERSION" >> $GITHUB_ENV RELEASE_MAJOR=$(jq -r '.version | split(".")[0]' package.json) echo "RELEASE_MAJOR=$RELEASE_MAJOR" >> $GITHUB_ENV DIST_TAG=$(jq -r '.version | if split("-")[1] == null then "latest" else "next" end' package.json) echo "DIST_TAG=$DIST_TAG" >> $GITHUB_ENV - name: Prepare README run: | echo -e "$(grep -P '## 📙 API Documentation' -B 10000 README.md)\n\n- [Getting Started Guide](https://fakerjs.dev/guide/)\n- [API Reference](https://fakerjs.dev/api/)\n\n$(grep -P '## 🚀 Features' -A 10000 README.md)" > README.md sed -i "s|/fakerjs.dev/|/v$RELEASE_MAJOR.fakerjs.dev/|g" README.md - name: Set publishing config run: pnpm config set '//registry.npmjs.org/:_authToken' "${NPM_AUTH_TOKEN}" env: NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} - name: Publish run: | pnpm publish --tag next --no-git-checks env: NPM_CONFIG_PROVENANCE: true - name: Set latest/next dist-tag run: | pnpm dist-tag add @faker-js/faker@$RELEASE_VERSION $DIST_TAG - name: Push to Release Branch run: | git push origin $GITHUB_REF_NAME:v$RELEASE_MAJOR