1414 required : false
1515 default : true
1616 type : boolean
17+ prerelease :
18+ description : " Publish with the next dist-tag instead of latest; version must include semver prerelease metadata"
19+ required : false
20+ default : false
21+ type : boolean
1722
1823permissions :
1924 contents : read
2934 DISPATCH_RELEASE_TAG : ${{ inputs.release_tag }}
3035 EVENT_RELEASE_TAG : ${{ github.event.release.tag_name }}
3136 DRY_RUN : ${{ github.event_name == 'workflow_dispatch' && inputs.dry_run || 'false' }}
37+ PRE_RELEASE : ${{ github.event_name == 'release' && github.event.release.prerelease || github.event_name == 'workflow_dispatch' && inputs.prerelease || false }}
3238 GH_TOKEN : ${{ github.token }}
3339 NPM_TOKEN : ${{ secrets.NPM_TOKEN }}
3440 steps :
7480 exit 1
7581 fi
7682
77- printf 'Publishing checked-in npm package version %s from tag %s\n' "$version" "$release_tag"
83+ case "$version" in
84+ *-*) version_is_prerelease=true ;;
85+ *) version_is_prerelease=false ;;
86+ esac
87+
88+ if [ "${PRE_RELEASE:-false}" = "true" ] && [ "$version_is_prerelease" != "true" ]; then
89+ printf 'Prerelease npm publication requires a semver prerelease version, but .version is %s\n' "$version" >&2
90+ exit 1
91+ fi
92+
93+ if [ "${PRE_RELEASE:-false}" = "true" ] || [ "$version_is_prerelease" = "true" ]; then
94+ printf 'Publishing checked-in npm prerelease package version %s from tag %s with npm dist-tag next\n' "$version" "$release_tag"
95+ else
96+ printf 'Publishing checked-in npm package version %s from tag %s with npm dist-tag latest\n' "$version" "$release_tag"
97+ fi
7898
7999 - name : Download canonical npm release asset
80100 shell : bash
@@ -120,7 +140,14 @@ jobs:
120140 if : env.DRY_RUN == 'true'
121141 run : |
122142 version="$(tr -d '\n' < .version)"
123- npm publish "dist/npm/sce-v${version}-npm.tgz" --access public --dry-run
143+ npm_tag="latest"
144+ case "$version" in
145+ *-*) npm_tag="next" ;;
146+ esac
147+ if [ "${PRE_RELEASE:-false}" = "true" ]; then
148+ npm_tag="next"
149+ fi
150+ npm publish "dist/npm/sce-v${version}-npm.tgz" --access public --tag "$npm_tag" --dry-run
124151
125152 - name : Ensure npm token is configured
126153 if : env.DRY_RUN != 'true'
@@ -138,4 +165,11 @@ jobs:
138165 NODE_AUTH_TOKEN : ${{ secrets.NPM_TOKEN }}
139166 run : |
140167 version="$(tr -d '\n' < .version)"
141- npm publish "dist/npm/sce-v${version}-npm.tgz" --access public
168+ npm_tag="latest"
169+ case "$version" in
170+ *-*) npm_tag="next" ;;
171+ esac
172+ if [ "${PRE_RELEASE:-false}" = "true" ]; then
173+ npm_tag="next"
174+ fi
175+ npm publish "dist/npm/sce-v${version}-npm.tgz" --access public --tag "$npm_tag"
0 commit comments