diff --git a/.github/changeset-version.js b/.github/changeset-version.js new file mode 100644 index 0000000..c81f85f --- /dev/null +++ b/.github/changeset-version.js @@ -0,0 +1,12 @@ +// ORIGINALLY FROM CLOUDFLARE WRANGLER: +// https://github.com/cloudflare/wrangler2/blob/main/.github/changeset-version.js + +import { exec } from "child_process"; + +// This script is used by the `release.yml` workflow to update the version of the packages being released. +// The standard step is only to run `changeset version` but this does not update the package-lock.json file. +// So we also run `npm install`, which does this update. +// This is a workaround until this is handled automatically by `changeset version`. +// See https://github.com/changesets/changesets/issues/421. +exec("npx changeset version"); +exec("pnpm install"); diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..cfc5564 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,54 @@ +name: Release + +on: + push: + branches: + - main + +env: + STORE_PATH: "" + +jobs: + release: + if: ${{ github.repository_owner == 'lmsqueezy' }} + name: "Create Release Pull Request or Publish to npm" + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install Bun + uses: oven-sh/setup-bun@v1 + with: + bun-version: "latest" + + - name: Cache Bun dependencies + uses: actions/cache@v3 + with: + path: | + ~/.bun + bun.lockb + key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lockb') }} + restore-keys: | + ${{ runner.os }}-bun- + + - name: Install dependencies + run: bun install + + - name: Build the package + run: bun run build + + - name: Publish to NPM + id: changesets + uses: changesets/action@v1.4.5 + with: + commit: "chore(release): version packages" + title: "chore(release): version packages" + version: node .github/changeset-version.js + publish: npx changeset publish + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + NODE_ENV: "production"