@@ -59,19 +59,55 @@ jobs:
5959 fi
6060 done
6161
62+ # Store package.json files BEFORE changeset to preserve peerDependencies
63+ echo "Backing up peerDependencies before changeset..."
64+ for pkg in packages/*/; do
65+ if [ -d "$pkg" ] && [ -f "$pkg/package.json" ]; then
66+ cp "$pkg/package.json" "$pkg/package.json.backup"
67+ echo "✓ Backed up $pkg/package.json"
68+ fi
69+ done
70+
6271 # Apply changesets and consume them
6372 pnpm changeset version
6473
65- # Check for version changes and update to beta
74+ # Ensure beta versions on develop branch
6675 TIMESTAMP=$(date +%s)
6776 CHANGED_PACKAGES=""
6877
78+ # Function to update beta timestamp (preserving version increments)
79+ update_beta_timestamp() {
80+ local current_version=$1
81+ local timestamp=$2
82+
83+ # If already has beta suffix, replace only the timestamp
84+ if [[ "$current_version" == *"-beta."* ]]; then
85+ echo "$current_version" | sed "s/-beta\.[0-9]*$/-beta.${timestamp}/"
86+ else
87+ # Add beta suffix to non-beta versions
88+ echo "${current_version}-beta.${timestamp}"
89+ fi
90+ }
91+
92+ # Apply beta suffixes to packages
93+ echo "Applying beta timestamps to packages..."
94+
6995 # Check main package
7096 NEW_MAIN=$(node -p "require('./package.json').version")
71- if [ "$ORIGINAL_MAIN" != "$NEW_MAIN" ]; then
72- BETA_VERSION="${NEW_MAIN}-beta.${TIMESTAMP}"
73- npm version $BETA_VERSION --no-git-tag-version
97+
98+ # If version changed OR doesn't have beta suffix, update it
99+ if [ "$ORIGINAL_MAIN" != "$NEW_MAIN" ] || [[ "$NEW_MAIN" != *"-beta."* ]]; then
100+ # If already has beta, just update timestamp; otherwise add beta
101+ if [[ "$NEW_MAIN" == *"-beta."* ]]; then
102+ BETA_MAIN=$(echo "$NEW_MAIN" | sed "s/-beta\.[0-9]*$/-beta.${TIMESTAMP}/")
103+ else
104+ BETA_MAIN="${NEW_MAIN}-beta.${TIMESTAMP}"
105+ fi
106+ npm version $BETA_MAIN --no-git-tag-version
74107 CHANGED_PACKAGES="vue-pivottable"
108+ echo "✓ Updated vue-pivottable: $NEW_MAIN → $BETA_MAIN"
109+ else
110+ echo "✓ vue-pivottable unchanged: $NEW_MAIN"
75111 fi
76112
77113 # Check sub-packages
@@ -81,55 +117,59 @@ jobs:
81117 PKG_NAME=$(basename "$pkg")
82118 NEW_VERSION=$(node -p "require('./package.json').version")
83119
84- # Only add beta if version changed
85- if [ "${ORIGINAL_VERSIONS[$PKG_NAME]}" != "$NEW_VERSION" ]; then
86- PKG_BETA="${NEW_VERSION}-beta.${TIMESTAMP}"
87- npm version $PKG_BETA --no-git-tag-version
120+ # If version changed OR doesn't have beta suffix, update it
121+ if [ "${ORIGINAL_VERSIONS[$PKG_NAME]}" != "$NEW_VERSION" ] || [[ "$NEW_VERSION" != *"-beta."* ]]; then
122+ # If already has beta, just update timestamp; otherwise add beta
123+ if [[ "$NEW_VERSION" == *"-beta."* ]]; then
124+ BETA_VERSION=$(echo "$NEW_VERSION" | sed "s/-beta\.[0-9]*$/-beta.${TIMESTAMP}/")
125+ else
126+ BETA_VERSION="${NEW_VERSION}-beta.${TIMESTAMP}"
127+ fi
128+ npm version $BETA_VERSION --no-git-tag-version
88129 CHANGED_PACKAGES="$CHANGED_PACKAGES $PKG_NAME"
130+ echo "✓ Updated $PKG_NAME: $NEW_VERSION → $BETA_VERSION"
131+ else
132+ echo "✓ $PKG_NAME unchanged: $NEW_VERSION"
89133 fi
90134 cd -
91135 fi
92136 done
93137
94- # Store package.json files before changeset modifications
95- for pkg in packages/*/; do
96- if [ -d "$pkg" ] && [ -f "$pkg/package.json" ]; then
97- cp "$pkg/package.json" "$pkg/package.json.backup"
98- fi
99- done
100-
101- # Commit all changes
102- git config user.name "github-actions[bot]"
103- git config user.email "github-actions[bot]@users.noreply.github.com"
104- git add -A
105- git commit -m "chore: prepare beta release
106-
107- Changed packages: $CHANGED_PACKAGES"
108-
109- # Restore peerDependencies from backup to prevent beta version pollution
138+ # Restore peerDependencies from backup to prevent auto-update
139+ echo "Restoring peerDependencies from backup..."
110140 for pkg in packages/*/; do
111141 if [ -d "$pkg" ] && [ -f "$pkg/package.json.backup" ]; then
112142 cd "$pkg"
143+ echo "Restoring peerDependencies for $(basename "$pkg")"
113144 # Extract peerDependencies from backup and apply to current
114145 node -e "
115146 const fs = require('fs');
116147 const backup = JSON.parse(fs.readFileSync('./package.json.backup', 'utf8'));
117148 const current = JSON.parse(fs.readFileSync('./package.json', 'utf8'));
118149 if (backup.peerDependencies) {
150+ console.log('Restoring peerDependencies:', backup.peerDependencies);
119151 current.peerDependencies = backup.peerDependencies;
152+ fs.writeFileSync('./package.json', JSON.stringify(current, null, 2) + '\\n');
120153 }
121- fs.writeFileSync('./package.json', JSON.stringify(current, null, 2) + '\\n');
122154 "
123- rm -f package.json.backup
124155 cd -
125156 fi
126157 done
127158
128- # Commit peerDependencies fix if there are changes
129- if ! git diff --quiet; then
130- git add -A
131- git commit -m "fix: restore peerDependencies to prevent beta version pollution"
132- fi
159+ # Commit all changes
160+ git config user.name "github-actions[bot]"
161+ git config user.email "github-actions[bot]@users.noreply.github.com"
162+ git add -A
163+ git commit -m "chore: prepare beta release
164+
165+ Changed packages: $CHANGED_PACKAGES"
166+
167+ # Clean up backup files
168+ for pkg in packages/*/; do
169+ if [ -d "$pkg" ] && [ -f "$pkg/package.json.backup" ]; then
170+ rm -f "$pkg/package.json.backup"
171+ fi
172+ done
133173
134174 git push origin develop
135175
@@ -167,6 +207,14 @@ jobs:
167207 local PKG_VERSION=$2
168208 local NPM_NAME=$3
169209
210+ echo "Checking if release ${PKG_NAME}@${PKG_VERSION} already exists..."
211+
212+ # Check if release already exists
213+ if gh release view "${PKG_NAME}@${PKG_VERSION}" &>/dev/null; then
214+ echo "⚠️ Release ${PKG_NAME}@${PKG_VERSION} already exists, skipping..."
215+ return 0
216+ fi
217+
170218 echo "Creating release for $PKG_NAME@$PKG_VERSION"
171219
172220 gh release create "${PKG_NAME}@${PKG_VERSION}" \
0 commit comments