From 094002429ffd66cb5cef800278e4d27c7713053a Mon Sep 17 00:00:00 2001 From: Ryan Anderson Date: Tue, 23 Dec 2025 16:16:56 -0600 Subject: [PATCH] fix: use latest published npm version for bumping instead of package.json - Check npm for latest published version before bumping - Prevents duplicate version errors when package.json hasn't been updated - Falls back to package.json version if package not published yet - Remove duplicate checkout step --- .github/workflows/release.yml | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index af3542e..a8711a3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -34,9 +34,6 @@ jobs: if: steps.check.outputs.should_skip != 'true' with: fetch-depth: 0 - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - uses: actions/setup-node@v4 if: steps.check.outputs.should_skip != 'true' @@ -49,18 +46,30 @@ jobs: if: steps.check.outputs.should_skip != 'true' run: npm ci - - name: Get current version and bump + - name: Get latest published version and bump if: steps.check.outputs.should_skip != 'true' id: version run: | - CURRENT_VERSION=$(node -p "require('./package.json').version") + # Try to get latest published version from npm + PUBLISHED_VERSION=$(npm view jscombguid version 2>/dev/null || echo "") + + # If not published yet, use package.json version + if [ -z "$PUBLISHED_VERSION" ]; then + CURRENT_VERSION=$(node -p "require('./package.json').version") + echo "Package not published yet, using package.json version: $CURRENT_VERSION" + else + CURRENT_VERSION="$PUBLISHED_VERSION" + echo "Latest published version: $CURRENT_VERSION" + fi + + # Bump patch version NEW_VERSION=$(node -e " const v = '$CURRENT_VERSION'.split('.'); v[2] = String(parseInt(v[2]) + 1); console.log(v.join('.')); ") echo "version=$NEW_VERSION" >> $GITHUB_OUTPUT - echo "Current: $CURRENT_VERSION → New: $NEW_VERSION" + echo "Bumping from $CURRENT_VERSION → $NEW_VERSION" - name: Update package.json version (in memory only) if: steps.check.outputs.should_skip != 'true'