diff --git a/.github/workflows/publish_npm.yml b/.github/workflows/publish_npm.yml new file mode 100644 index 0000000..a28c535 --- /dev/null +++ b/.github/workflows/publish_npm.yml @@ -0,0 +1,57 @@ +name: Publish current branch to npm + +on: + workflow_dispatch: + +jobs: + publish: + runs-on: ubuntu-latest + permissions: + contents: read + strategy: + matrix: + package: [ + . + ] + steps: + - name: Checkout + uses: actions/checkout@v4.1.1 + with: + fetch-depth: 0 # fetch-depth 0 needed for NBGV + - name: Use Node.js 20 + uses: actions/setup-node@v4.0.2 + with: + node-version: 20 + - name: Nerdbank.GitVersioning + id: nbgv + uses: dotnet/nbgv@v0.4.2 + with: + stamp: ${{ matrix.package }}/package.json + - run: npm ci + - run: cd ${{ matrix.package }}; npm run build + - name: Publish release to npm + uses: JS-DevTools/npm-publish@v3 + id: npmrelease + # boolean properties from NBGV step appears to be converted into *capitalized* strings + # so explicitly string compare PublicRelease output value + if: ${{ steps.nbgv.outputs.PublicRelease == 'True'}} + with: + token: ${{ secrets.NPM_PUBLISH }} + registry: https://registry.npmjs.org/ + tag: ${{ steps.nbgv.outputs.PrereleaseVersion == '' && 'latest' || 'preview' }} # Assign a 'preview' tag to versions end with '-preview'. Otherwise, assign a 'latest' tag to the latest release. + access: public + package: ${{ matrix.package }} + - name: Publish test package to npm + uses: JS-DevTools/npm-publish@v3 + id: npmtest + if: ${{ steps.nbgv.outputs.PublicRelease == 'False'}} + with: + token: ${{ secrets.NPM_PUBLISH }} + registry: https://registry.npmjs.org/ + tag: 'test' + access: public + package: ${{ matrix.package }} + - if: ${{ steps.npmrelease.outputs.type }} + run: echo "Published a new release package!" + - if: ${{ steps.npmtest.outputs.type }} + run: echo "Published a new test package!"