Skip to content
This repository was archived by the owner on Jun 10, 2026. It is now read-only.

Commit fbcb5e0

Browse files
ci: prereleases now use their tag instead of latest
Before pushing the `v1.2.3-alpha` tag would override `v1`, `v1.2`, and `v1.2.3` as well as pushing to `latest` instead of `alpha`. This commit fixes that.
1 parent 4005dd5 commit fbcb5e0

1 file changed

Lines changed: 16 additions & 3 deletions

File tree

‎.github/workflows/many--publish-npm-package.yaml‎

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ jobs:
2626
runs-on: ubuntu-latest
2727
outputs:
2828
is_release: ${{ steps.version.outputs.is_release }}
29+
is_prerelease: ${{ steps.version.outputs.is_prerelease }}
2930
npm_tag: ${{ steps.version.outputs.npm_tag }}
3031
package_version: ${{ steps.package.outputs.version }}
3132
package_name: ${{ steps.package.outputs.name }}
@@ -51,17 +52,26 @@ jobs:
5152
- name: Determine version and tag
5253
id: version
5354
run: |
54-
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
55-
echo "TAG_VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV
55+
if [[ "${GITHUB_REF}" == refs/tags/v*.*.*-* ]]; then
56+
# prerelease for example: v1.2.3-alpha
57+
echo "npm_tag=${GITHUB_REF##*-}" >> $GITHUB_OUTPUT
58+
echo "is_release=false" >> $GITHUB_OUTPUT
59+
echo "is_prerelease=true" >> $GITHUB_OUTPUT
60+
elif [[ "${GITHUB_REF}" == refs/tags/v*.*.* ]]; then
61+
# release for example: v1.2.3
5662
echo "npm_tag=latest" >> $GITHUB_OUTPUT
5763
echo "is_release=true" >> $GITHUB_OUTPUT
64+
echo "is_prerelease=false" >> $GITHUB_OUTPUT
5865
else
66+
# regular commit
5967
echo "npm_tag=unstable" >> $GITHUB_OUTPUT
6068
echo "is_release=false" >> $GITHUB_OUTPUT
69+
echo "is_prerelease=false" >> $GITHUB_OUTPUT
6170
fi
6271
- name: Verify tag matches package.json
6372
if: steps.version.outputs.is_release == 'true'
6473
run: |
74+
TAG_VERSION="${GITHUB_REF#refs/tags/v}"
6575
if [ "$PACKAGE_VERSION" != "$TAG_VERSION" ]; then
6676
echo -n "Error: package.json version ($PACKAGE_VERSION)"
6777
echo " does not match tag ($TAG_VERSION)"
@@ -150,8 +160,11 @@ jobs:
150160
IFS='.' read -r MAJOR MINOR PATCH <<< "$PACKAGE_VERSION"
151161
npm dist-tag add "$PACKAGE_NAME@$PACKAGE_VERSION" "$MAJOR.$MINOR"
152162
npm dist-tag add "$PACKAGE_NAME@$PACKAGE_VERSION" "$MAJOR"
163+
elif [ "${{ needs.build.outputs.is_prerelease }}" = "true" ]; then
164+
npm version prerelease --preid "${{ needs.build.outputs.npm_tag }}" --no-git-tag-version
165+
npm publish --registry ${{ matrix.registry_url }} --tag ${{ needs.build.outputs.npm_tag }}
153166
else
154167
SHORT_SHA=${GITHUB_SHA:0:7}
155-
npm version prerelease --preid=${{ needs.build.outputs.npm_tag }}-$SHORT_SHA --no-git-tag-version
168+
npm version prerelease --preid "${{ needs.build.outputs.npm_tag }}-$SHORT_SHA" --no-git-tag-version
156169
npm publish --registry ${{ matrix.registry_url }} --tag ${{ needs.build.outputs.npm_tag }}
157170
fi

0 commit comments

Comments
 (0)