Skip to content

Commit 79bcb05

Browse files
committed
fix: 베타 버전 중복 및 peerDependencies 문제 해결
- 베타 버전이 중복으로 추가되는 문제 수정 - peerDependencies에 베타 버전이 반영되지 않도록 수정 - changeset 적용 전후 버전 비교로 실제 변경된 패키지만 베타 버전 추가 - peerDependencies는 항상 'latest' 유지
1 parent acb01ee commit 79bcb05

File tree

3 files changed

+75
-15
lines changed

3 files changed

+75
-15
lines changed

.github/workflows/release-develop.yml

Lines changed: 59 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -49,29 +49,69 @@ jobs:
4949
id: version
5050
if: steps.changesets-check.outputs.has_changesets == 'true'
5151
run: |
52+
# Store original versions before changeset
53+
ORIGINAL_MAIN=$(node -p "require('./package.json').version")
54+
declare -A ORIGINAL_VERSIONS
55+
for pkg in packages/*/; do
56+
if [ -d "$pkg" ] && [ -f "$pkg/package.json" ]; then
57+
PKG_NAME=$(basename "$pkg")
58+
ORIGINAL_VERSIONS[$PKG_NAME]=$(cd "$pkg" && node -p "require('./package.json').version")
59+
fi
60+
done
61+
5262
# Apply changesets and consume them
5363
pnpm changeset version
5464
55-
# Update to beta versions
56-
MAIN_VERSION=$(node -p "require('./package.json').version")
65+
# Check for version changes and update to beta
5766
TIMESTAMP=$(date +%s)
67+
CHANGED_PACKAGES=""
5868
59-
# Remove ALL existing beta suffixes if present and add new one
60-
CLEAN_VERSION=$(echo "$MAIN_VERSION" | sed 's/-beta\.[0-9]*//g')
61-
BETA_VERSION="${CLEAN_VERSION}-beta.${TIMESTAMP}"
69+
# Function to clean beta suffixes (handles multiple beta suffixes)
70+
clean_beta_version() {
71+
echo "$1" | sed 's/-beta\.[0-9]*//g'
72+
}
6273
63-
# Update main package
64-
npm version $BETA_VERSION --no-git-tag-version
74+
# Check main package
75+
NEW_MAIN=$(node -p "require('./package.json').version")
76+
if [ "$ORIGINAL_MAIN" != "$NEW_MAIN" ]; then
77+
CLEAN_VERSION=$(clean_beta_version "$NEW_MAIN")
78+
BETA_VERSION="${CLEAN_VERSION}-beta.${TIMESTAMP}"
79+
npm version $BETA_VERSION --no-git-tag-version
80+
CHANGED_PACKAGES="vue-pivottable"
81+
fi
6582
66-
# Update sub-packages
83+
# Check sub-packages
6784
for pkg in packages/*/; do
6885
if [ -d "$pkg" ] && [ -f "$pkg/package.json" ]; then
6986
cd "$pkg"
70-
PKG_VERSION=$(node -p "require('./package.json').version")
71-
# Remove ALL existing beta suffixes if present and add new one
72-
PKG_CLEAN=$(echo "$PKG_VERSION" | sed 's/-beta\.[0-9]*//g')
73-
PKG_BETA="${PKG_CLEAN}-beta.${TIMESTAMP}"
74-
npm version $PKG_BETA --no-git-tag-version
87+
PKG_NAME=$(basename "$pkg")
88+
NEW_VERSION=$(node -p "require('./package.json').version")
89+
90+
# Only add beta if version changed
91+
if [ "${ORIGINAL_VERSIONS[$PKG_NAME]}" != "$NEW_VERSION" ]; then
92+
PKG_CLEAN=$(clean_beta_version "$NEW_VERSION")
93+
PKG_BETA="${PKG_CLEAN}-beta.${TIMESTAMP}"
94+
npm version $PKG_BETA --no-git-tag-version
95+
CHANGED_PACKAGES="$CHANGED_PACKAGES $PKG_NAME"
96+
fi
97+
cd -
98+
fi
99+
done
100+
101+
# Revert peerDependencies changes to prevent beta versions in dependencies
102+
echo "Reverting peerDependencies changes..."
103+
for pkg in packages/*/; do
104+
if [ -d "$pkg" ] && [ -f "$pkg/package.json" ]; then
105+
cd "$pkg"
106+
# Reset peerDependencies to use 'latest' or specific non-beta versions
107+
node -e "
108+
const fs = require('fs');
109+
const pkg = JSON.parse(fs.readFileSync('./package.json', 'utf8'));
110+
if (pkg.peerDependencies && pkg.peerDependencies['vue-pivottable']) {
111+
pkg.peerDependencies['vue-pivottable'] = 'latest';
112+
fs.writeFileSync('./package.json', JSON.stringify(pkg, null, 2) + '\\n');
113+
}
114+
"
75115
cd -
76116
fi
77117
done
@@ -80,10 +120,14 @@ jobs:
80120
git config user.name "github-actions[bot]"
81121
git config user.email "github-actions[bot]@users.noreply.github.com"
82122
git add -A
83-
git commit -m "chore: prepare beta release"
123+
git commit -m "chore: prepare beta release
124+
125+
Changed packages: $CHANGED_PACKAGES"
84126
git push origin develop
85127

86-
echo "version=$BETA_VERSION" >> $GITHUB_OUTPUT
128+
# Always use current main package version for GitHub release tag
129+
CURRENT_VERSION=$(node -p "require('./package.json').version")
130+
echo "version=${CURRENT_VERSION}" >> $GITHUB_OUTPUT
87131

88132
- name: Run quality checks
89133
if: steps.changesets-check.outputs.has_changesets == 'true'

pr238_initial_state.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"timestamp": "2025-06-20T01:54:14Z",
3+
"title": "Release: 1.1.5-beta.1750384228",
4+
"body": "## 🚀 Release 1.1.5-beta.1750384228\n \n This PR contains the latest beta release ready for production.\n \n ### Beta Version\n - 1.1.5-beta.1750384228\n \n ### Packages to be released\n - vue-pivottable: 1.1.5-beta.1750384228\n - Check sub-packages for version updates\n \n ### Pre-release Testing\n - Beta version has been published to npm with tag @beta\n - Install with: `npm install vue-pivottable@beta`\n \n ### Release Notes\n See [CHANGELOG.md](./CHANGELOG.md) for details.\n \n ---\n ⚠️ **Note**: This PR will be automatically updated if new changes are pushed to develop.",
5+
"labels": [],
6+
"updatedAt": "2025-06-20T01:53:36Z",
7+
"state": "OPEN"
8+
}

pr238_updated_state.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"timestamp": "2025-06-20T01:57:00Z",
3+
"title": "Release: 1.1.5-beta.1750384228",
4+
"body": "## 🚀 Release 1.1.5-beta.1750384228\n \n This PR contains the latest beta release ready for production.\n \n ### Beta Version\n - 1.1.5-beta.1750384228\n \n ### Packages to be released\n - vue-pivottable: 1.1.5-beta.1750384228\n - Check sub-packages for version updates\n \n ### Pre-release Testing\n - Beta version has been published to npm with tag @beta\n - Install with: `npm install vue-pivottable@beta`\n \n ### Release Notes\n See [CHANGELOG.md](./CHANGELOG.md) for details.\n \n ---\n ⚠️ **Note**: This PR will be automatically updated if new changes are pushed to develop.",
5+
"labels": [],
6+
"updatedAt": "2025-06-20T01:55:36Z",
7+
"state": "OPEN"
8+
}

0 commit comments

Comments
 (0)