3535 VERSION=${GITHUB_REF_NAME#v}
3636 echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
3737 echo "📌 Expected version: $VERSION"
38+
39+ # Determine npm tag based on version format
40+ if [[ "$VERSION" =~ -[0-9]+$ ]]; then
41+ NPM_TAG="alpha"
42+ echo "🚨 Decorated version detected, using --tag alpha"
43+ else
44+ NPM_TAG="latest"
45+ echo "✅ Stable version, using --tag latest"
46+ fi
47+ echo "NPM_TAG=$NPM_TAG" >> $GITHUB_OUTPUT
3848
3949 - name : Verify package versions match tag
4050 run : |
@@ -119,48 +129,47 @@ jobs:
119129 NODE_AUTH_TOKEN : ${{ secrets.NPM_TOKEN }}
120130 run : |
121131 set -e
132+ NPM_TAG="${{ steps.extract_version.outputs.NPM_TAG }}"
122133
123134 echo "Publishing @vue-skuilder/common..."
124- cd packages/common && yarn npm publish --access public && cd ../..
135+ cd packages/common && yarn npm publish --access public --tag $NPM_TAG && cd ../..
125136
126137 echo "Publishing @vue-skuilder/db..."
127- cd packages/db && yarn npm publish --access public && cd ../..
138+ cd packages/db && yarn npm publish --access public --tag $NPM_TAG && cd ../..
128139
129140 echo "Publishing @vue-skuilder/common-ui..."
130- cd packages/common-ui && yarn npm publish --access public && cd ../..
141+ cd packages/common-ui && yarn npm publish --access public --tag $NPM_TAG && cd ../..
131142
132143 echo "Publishing @vue-skuilder/edit-ui..."
133- cd packages/edit-ui && yarn npm publish --access public && cd ../..
144+ cd packages/edit-ui && yarn npm publish --access public --tag $NPM_TAG && cd ../..
134145
135146 echo "Publishing @vue-skuilder/courseware..."
136- cd packages/courseware && yarn npm publish --access public && cd ../..
147+ cd packages/courseware && yarn npm publish --access public --tag $NPM_TAG && cd ../..
137148
138149 echo "Publishing @vue-skuilder/client..."
139- cd packages/client && yarn npm publish --access public && cd ../..
150+ cd packages/client && yarn npm publish --access public --tag $NPM_TAG && cd ../..
140151
141152 echo "Publishing @vue-skuilder/platform-ui..."
142- cd packages/platform-ui && yarn npm publish --access public && cd ../..
153+ cd packages/platform-ui && yarn npm publish --access public --tag $NPM_TAG && cd ../..
143154
144155 echo "Publishing @vue-skuilder/standalone-ui..."
145- cd packages/standalone-ui && yarn npm publish --access public && cd ../..
156+ cd packages/standalone-ui && yarn npm publish --access public --tag $NPM_TAG && cd ../..
146157
147158 echo "Publishing @vue-skuilder/mcp..."
148- cd packages/mcp && yarn npm publish --access public && cd ../..
159+ cd packages/mcp && yarn npm publish --access public --tag $NPM_TAG && cd ../..
149160
150161 # echo "Publishing @vue-skuilder/tuilder..."
151- # cd packages/tuilder && yarn npm publish --access public && cd ../..
162+ # cd packages/tuilder && yarn npm publish --access public --tag $NPM_TAG && cd ../..
152163
153164 echo "Publishing @vue-skuilder/express..."
154- cd packages/express && yarn npm publish --access public && cd ../..
165+ cd packages/express && yarn npm publish --access public --tag $NPM_TAG && cd ../..
155166
156167 echo "Publishing @vue-skuilder/cli (scoped)..."
157- cd packages/cli && yarn npm publish --access public && cd ../..
168+ cd packages/cli && yarn npm publish --access public --tag $NPM_TAG && cd ../..
158169
159170 # Dual-publish CLI as unscoped 'skuilder' package
160171 echo "Publishing CLI as 'skuilder'..."
161- TEMP_DIR=$(mktemp -d)
162- cp -r packages/cli/* "$TEMP_DIR/"
163- cd "$TEMP_DIR"
172+ cd packages/cli
164173
165174 # Modify package.json for unscoped publish
166175 node -e "
@@ -172,8 +181,9 @@ jobs:
172181 fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2));
173182 "
174183
175- npm publish --access public
176- cd - && rm -rf "$TEMP_DIR"
184+ # Use yarn npm publish to maintain workspace dependency resolution
185+ yarn npm publish --access public --tag $NPM_TAG
186+ cd ../..
177187
178188 echo "All packages published successfully!"
179189
0 commit comments