From e8990a4d2aa7acffa1284568c849fdf282c7822c Mon Sep 17 00:00:00 2001 From: Hunain Bin Sajid Date: Wed, 18 Sep 2024 18:29:37 +0500 Subject: [PATCH] feat: add npm publish github action workflow (#28) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * test: husky integration check * test: husky integration check * build: add ci-checks in github workflow * Apply suggestions from Daniel in code review Co-authored-by: Daniel Lenksjö <5889538+lenkan@users.noreply.github.com> * fix: add single job for main.yml * feat: add prettierignore file * fix: format check instead of overwrite * feat: add npm publish github action workflow * format: publish-npm file --------- Co-authored-by: Daniel Lenksjö <5889538+lenkan@users.noreply.github.com> --- .github/workflows/publish-npm.yml | 61 +++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 .github/workflows/publish-npm.yml diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml new file mode 100644 index 0000000..73a88f6 --- /dev/null +++ b/.github/workflows/publish-npm.yml @@ -0,0 +1,61 @@ +name: Publish NPM + +on: + workflow_dispatch: + inputs: + dry-run: + type: boolean + default: true + description: Dry run publish + dist-tag: + type: choice + options: + - dev + - latest + default: dev + description: Npm dist tag +jobs: + publish: + name: Publish NPM + permissions: + contents: write + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: "20" + cache: "npm" + registry-url: "https://registry.npmjs.org" + + - name: Install dependencies + run: npm ci --ignore-scripts + + - name: Set package name from vars + if: ${{ vars.NPM_PACKAGE_NAME }} + run: | + cat package.json | jq -r '.name = "${{ vars.NPM_PACKAGE_NAME }}"' > package.json.tmp + mv package.json.tmp package.json + + - name: Set version from commit + if: ${{ inputs.dist-tag == 'dev' }} + run: | + npm version --no-git-tag-version $(cat package.json | jq .version -r)-dev.$(git rev-parse --short HEAD) + + - name: Create git tag + run: git tag $(cat package.json | jq .version -r) + + - name: Publish dev package (Dry run) + if: ${{ inputs.dry-run == true }} + run: npm publish --tag "${{ inputs.dist-tag }}" --dry-run + + - name: Publish dev package + if: ${{ inputs.dry-run == false }} + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + run: | + npm publish --tag "${{ inputs.dist-tag }}" + git tag v$(cat package.json | jq .version -r) + git push origin v$(cat package.json | jq .version -r)