Skip to content

chore(release): make release publishing resumable#14953

Merged
edison1105 merged 1 commit into
mainfrom
edison/chore/release
Jun 11, 2026
Merged

chore(release): make release publishing resumable#14953
edison1105 merged 1 commit into
mainfrom
edison/chore/release

Conversation

@edison1105

@edison1105 edison1105 commented Jun 11, 2026

Copy link
Copy Markdown
Member

Summary by CodeRabbit

  • Chores
    • Improved reliability of the package publishing process with enhanced registry version verification before publishing
    • Enhanced release logs to provide clearer information about packages skipped due to existing versions

@coderabbitai

coderabbitai Bot commented Jun 11, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The release script now discovers packages by reading each package.json manifest and filtering private packages. It establishes publish order with sortPackagesForPublishing() to place all non-vue packages first and vue last. During publication, it resolves the actual package name from the manifest, checks if that exact version already exists in the npm registry, and skips publishing if found. The release report now lists packages that were skipped due to prior registry publication instead of non-published packages.

Changes

Registry-aware publishing and package ordering

Layer / File(s) Summary
Manifest helpers and state tracking
scripts/release.js
Adds getPkgManifest() helper to load package manifests. Introduces alreadyPublishedPackages array to track registry-skipped versions. Implements isPackagePublished() and isPackageNotFoundError() helpers that query npm registry via npm view with error detection.
Package discovery filtering and publish ordering
scripts/release.js
Package enumeration now reads each candidate's package.json and filters out private packages. Introduces sortPackagesForPublishing() helper that orders non-vue packages first and vue last. Updates publishPackages() loop to iterate packages in sorted order.
Registry-aware publish and error handling
scripts/release.js
Resolves actual packageName from package manifest rather than folder name. Adds pre-publish registry check that skips versions already published. Updates error handling to treat "previously published" errors as registry skips while re-throwing other failures.
Release output reporting
scripts/release.js
Final release log now reports packages that already existed on the registry and were skipped, replacing the prior non-published package listing.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 With manifests read and packages sorted clean,
We check the registry—what's been seen.
Vue waits its turn, the others go first,
Already published? No need to burst!
Release logs sing of skips with care. 📦✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'chore(release): make release publishing resumable' clearly describes the main objective of the changeset, which modifies the release script to support resumable publishing by tracking already-published packages and implementing a pre-publish registry check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch edison/chore/release

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

Copy link
Copy Markdown

Size Report

Bundles

File Size Gzip Brotli
runtime-dom.global.prod.js 106 kB 40.2 kB 36.1 kB
vue.global.prod.js 164 kB 60.2 kB 53.5 kB

Usages

Name Size Gzip Brotli
createApp (CAPI only) 48.8 kB 19 kB 17.4 kB
createApp 56.9 kB 22 kB 20.1 kB
createSSRApp 61.2 kB 23.8 kB 21.7 kB
defineCustomElement 63.1 kB 23.9 kB 21.8 kB
overall 71.7 kB 27.4 kB 25 kB

@pkg-pr-new

pkg-pr-new Bot commented Jun 11, 2026

Copy link
Copy Markdown

Open in StackBlitz

@vue/compiler-core

pnpm add https://pkg.pr.new/@vue/compiler-core@14953
npm i https://pkg.pr.new/@vue/compiler-core@14953
yarn add https://pkg.pr.new/@vue/compiler-core@14953.tgz

@vue/compiler-dom

pnpm add https://pkg.pr.new/@vue/compiler-dom@14953
npm i https://pkg.pr.new/@vue/compiler-dom@14953
yarn add https://pkg.pr.new/@vue/compiler-dom@14953.tgz

@vue/compiler-sfc

pnpm add https://pkg.pr.new/@vue/compiler-sfc@14953
npm i https://pkg.pr.new/@vue/compiler-sfc@14953
yarn add https://pkg.pr.new/@vue/compiler-sfc@14953.tgz

@vue/compiler-ssr

pnpm add https://pkg.pr.new/@vue/compiler-ssr@14953
npm i https://pkg.pr.new/@vue/compiler-ssr@14953
yarn add https://pkg.pr.new/@vue/compiler-ssr@14953.tgz

@vue/reactivity

pnpm add https://pkg.pr.new/@vue/reactivity@14953
npm i https://pkg.pr.new/@vue/reactivity@14953
yarn add https://pkg.pr.new/@vue/reactivity@14953.tgz

@vue/runtime-core

pnpm add https://pkg.pr.new/@vue/runtime-core@14953
npm i https://pkg.pr.new/@vue/runtime-core@14953
yarn add https://pkg.pr.new/@vue/runtime-core@14953.tgz

@vue/runtime-dom

pnpm add https://pkg.pr.new/@vue/runtime-dom@14953
npm i https://pkg.pr.new/@vue/runtime-dom@14953
yarn add https://pkg.pr.new/@vue/runtime-dom@14953.tgz

@vue/server-renderer

pnpm add https://pkg.pr.new/@vue/server-renderer@14953
npm i https://pkg.pr.new/@vue/server-renderer@14953
yarn add https://pkg.pr.new/@vue/server-renderer@14953.tgz

@vue/shared

pnpm add https://pkg.pr.new/@vue/shared@14953
npm i https://pkg.pr.new/@vue/shared@14953
yarn add https://pkg.pr.new/@vue/shared@14953.tgz

vue

pnpm add https://pkg.pr.new/vue@14953
npm i https://pkg.pr.new/vue@14953
yarn add https://pkg.pr.new/vue@14953.tgz

@vue/compat

pnpm add https://pkg.pr.new/@vue/compat@14953
npm i https://pkg.pr.new/@vue/compat@14953
yarn add https://pkg.pr.new/@vue/compat@14953.tgz

commit: d7b9556

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
scripts/release.js (1)

481-485: 💤 Low value

Inconsistent color for the same outcome.

When a package is skipped due to already being published, line 455 uses yellow (pico.yellow) for the pre-check case, but line 483 uses red (pico.red) for the publish-error case. Both represent the same semantic outcome (package was skipped because it already exists). Consider using consistent coloring.

Suggested fix for consistency
    } catch (/** `@type` {any} */ e) {
      if (e.message?.match(/previously published/)) {
        const pkgVersion = `${packageName}@${version}`
-       console.log(pico.red(`Skipping already published: ${pkgVersion}`))
+       console.log(pico.yellow(`Skipping already published: ${pkgVersion}`))
        alreadyPublishedPackages.push(pkgVersion)
      } else {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/release.js` around lines 481 - 485, The log color for skipped
packages is inconsistent: the pre-check uses pico.yellow while the publish-error
path uses pico.red; update the publish-error branch inside the error handler
that pushes into alreadyPublishedPackages (where pkgVersion is built from
packageName and version) to use the same pico color as the pre-check (use
pico.yellow or choose a single color and apply it to both places) so both code
paths print the identical colored message for the same "already published"
outcome.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@scripts/release.js`:
- Around line 481-485: The log color for skipped packages is inconsistent: the
pre-check uses pico.yellow while the publish-error path uses pico.red; update
the publish-error branch inside the error handler that pushes into
alreadyPublishedPackages (where pkgVersion is built from packageName and
version) to use the same pico color as the pre-check (use pico.yellow or choose
a single color and apply it to both places) so both code paths print the
identical colored message for the same "already published" outcome.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 0feb28ff-748a-4f91-a6c6-d16d03848826

📥 Commits

Reviewing files that changed from the base of the PR and between c00b021 and d7b9556.

📒 Files selected for processing (1)
  • scripts/release.js

@edison1105 edison1105 merged commit 30ba647 into main Jun 11, 2026
16 checks passed
@edison1105 edison1105 deleted the edison/chore/release branch June 11, 2026 05:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant