Skip to content

Update dependency @vitejs/plugin-vue to v6 - #2859

Open
renovate[bot] wants to merge 3 commits into
masterfrom
renovate/vitejs-plugin-vue-6.x
Open

Update dependency @vitejs/plugin-vue to v6#2859
renovate[bot] wants to merge 3 commits into
masterfrom
renovate/vitejs-plugin-vue-6.x

Conversation

@renovate

@renovate renovate Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
@vitejs/plugin-vue (source) 5.2.16.0.8 age confidence

Release Notes

vitejs/vite-plugin-vue (@​vitejs/plugin-vue)

v6.0.8

Features
Bug Fixes

v6.0.7

Features
Bug Fixes

v6.0.6

Features
  • plugin-vue: propagate multiRoot for template-only vapor components (#​745) (9e07ae9)
Bug Fixes
Miscellaneous Chores

v6.0.5

Miscellaneous Chores

v6.0.4

Bug Fixes
Miscellaneous Chores

v6.0.3

Features
Bug Fixes
Performance Improvements
Miscellaneous Chores

v6.0.2

Bug Fixes
Miscellaneous Chores

v6.0.1

Bug Fixes
Performance Improvements
Miscellaneous Chores
Build System

v6.0.0

Bug Fixes
Miscellaneous Chores
Code Refactoring

v5.2.4

Features
  • plugin-vue: use transformWithOxc if rolldown-vite is detected (#​584) (6ac8e3a)
Bug Fixes
  • plugin-vue: handle sourcemap with empty script code (#​585) (7f73970)
  • plugin-vue: when the resource path contains chinese characters, dev/build is inconsistent (#​550) (5f6affe)
Miscellaneous Chores

v5.2.3

5.2.3 (2025-03-17)

v5.2.2

Features
  • css: tree shake scoped styles (#​533) (333094f)
  • pass descriptor vapor flag to compileTemplte (219e007)
Bug Fixes
  • deps: update all non-major dependencies (#​482) (cdbae68)
  • deps: update all non-major dependencies (#​488) (5d39582)
  • generate unique component id (#​538) (2704e85)
  • index: move the if check earlier to avoid creating unnecessary ssr when entering return block (#​523) (2135c84)
  • plugin-vue: default value for compile time flags (#​495) (ae9d948)
  • plugin-vue: ensure HMR updates styles when SFC is treated as a type dependency (#​541) (4abe3be)
  • plugin-vue: resolve sourcemap conflicts in build watch mode with cached modules (#​505) (906cebb)
  • plugin-vue: support external import URLs for monorepos (#​524) (cdd4922)
  • plugin-vue: support vapor template-only component (#​529) (95be153)
  • plugin-vue: suppress warnings for non-recognized pseudo selectors form lightningcss (#​521) (15c0eb0)
  • properly interpret boolean values in define (#​545) (46d3d65)
Miscellaneous Chores

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • Between 12:00 AM and 03:59 AM, on day 1 of the month (* 0-3 1 * *)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot force-pushed the renovate/vitejs-plugin-vue-6.x branch 3 times, most recently from b37f9e8 to 2a50c3e Compare July 10, 2026 19:04
@renovate
renovate Bot force-pushed the renovate/vitejs-plugin-vue-6.x branch from 2a50c3e to 816b67c Compare July 17, 2026 11:15
@renovate
renovate Bot force-pushed the renovate/vitejs-plugin-vue-6.x branch 2 times, most recently from 053c4e9 to 04022c6 Compare July 30, 2026 20:37
@renovate
renovate Bot force-pushed the renovate/vitejs-plugin-vue-6.x branch 5 times, most recently from 73b9770 to a4ca03f Compare August 5, 2026 17:46
@renovate
renovate Bot force-pushed the renovate/vitejs-plugin-vue-6.x branch from a4ca03f to 4aeb183 Compare August 5, 2026 17:50
@mvandenburgh mvandenburgh added the dependencies Update one or more dependencies version label Aug 5, 2026

@mvandenburgh mvandenburgh left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

(From Claude) Checked this bump against the current tree. Nothing in web/src breaks today — the built JS is byte-identical to master and total CSS byte count is unchanged — but v6 has three behavior changes that silently void assumptions we currently rely on.

Requested before merge: the one-line include: /\.vue$/ fix in web/vite.config.mts (item 1), and propagating the raised Node floor to devEngines + netlify.toml (item 3). Item 2 is informational.

1. vite-plugin-vuetify's auto-import filter degrades to match-everything

v6 moved include/exclude off the plugin's public api.options onto api.include/api.exclude. vite-plugin-vuetify@2.1.0 reads api.options.include, so it now gets undefined, and createFilter(undefined, undefined) matches every non-virtual id. Its vuetify:import transform goes from running on .vue files only to running over the whole module graph (~1550 modules).

No damage today — nothing in web/src/**/*.{ts,js} contains resolveComponent, and no bundled dep triggers it either (hence the identical JS). But any .ts/.js module or dependency shipping SFC-compiled _resolveComponent("X") render code would get its runtime lookup rewritten to a static Vuetify import.

Upgrading the vuetify plugin doesn't help — 2.1.3 still reads api.options.include. The fix is one line in web/vite.config.mts:

Vue({ include: /\.vue$/ })

2. Scoped CSS is reordered in the production bundle

v6 attaches meta.vite.cssScopeTo to <style scoped> blocks, which makes Vite relocate scoped CSS to the SFC module's position in the chunk rather than the style-import position. Building the same web/src before/after produces the same rules in a different order.

Only DandisetSearchField.vue has both a scoped and an unscoped block, and its selectors are disjoint (.search-field-form / .advanced-search-help vs .operator-suggestions), so nothing regresses. Worth knowing that a later unscoped <style> block no longer reliably overrides an equal-specificity rule from the same file's earlier <style scoped> block — and that dev mode still emits declaration order, so a future conflict would be prod-only.

Relatedly, cssScopeTo also flips those modules from moduleSideEffects: "no-treeshake" to false, gating CSS emission on the SFC's default export surviving tree-shaking. Nothing is pruned today (no defineAsyncComponent, no global app.component() registration), but the emission is now conditional where it previously was not.

3. Node floor is raised but not propagated

v6 dropped v5's crypto.hash ?? createHash(...) fallback and calls crypto.hash unconditionally, so the real floor is now Node 20.12+; the lockfile records ^20.19.0 || >=22.12.0. Two places still disagree:

  • web/package.json devEngines.runtime.version is ">=20", which green-lights 20.0–20.11 where the build now dies on the first .vue file with TypeError: crypto.hash is not a function.
  • web/netlify.toml pins NODE_VERSION = "20" in all four contexts including [context.release]. A bare major has no floor; it works only because Netlify's image resolves it to a recent 20.x.

CI runs Node 24 only, so the deploy runtime isn't exercised either way (pre-existing, not introduced here). Suggest bumping devEngines to match the lockfile and pinning NODE_VERSION to a concrete version.

@vitejs/plugin-vue 6 dropped v5's `crypto.hash ?? createHash(...)`
fallback and calls `crypto.hash` unconditionally, which requires Node
20.12+. The package declares `^20.19.0 || >=22.12.0`, but two places
still allowed older runtimes:

- `devEngines.runtime.version` was `>=20`, which green-lit Node
  20.0-20.11 where the build now fails on the first .vue file with
  `TypeError: crypto.hash is not a function`.
- `netlify.toml` set `NODE_VERSION = "20"` in all four contexts. A bare
  major has no floor and only worked because Netlify's build image
  happens to resolve it to a recent 20.x.

Match devEngines to the lockfile requirement and pin Netlify to an
explicit 20.19.0 so the deploy runtime is reproducible.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@renovate

renovate Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor Author

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

@vitejs/plugin-vue v6 no longer seeds its default `include` (/\.vue$/)
into `api.options` — the value now lives on the separate `api.include`
accessor. vite-plugin-vuetify still builds its auto-import filter with
`createFilter(api.options.include, api.options.exclude)`, so under v6 it
receives `undefined` and produces a filter that matches every module
instead of only .vue files, running its `vuetify:import` transform over
the whole module graph.

Passing the plugin's own default explicitly restores the previous filter,
since `rawOptions` is still spread into `options`. Verified against
plugin-vue 6.0.8: without this, `api.options.include` is `undefined` and
the filter matches src/main.ts; with it, the filter matches only .vue.

Upgrading vite-plugin-vuetify does not help — 2.1.3 reads `api.options`
the same way.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Update one or more dependencies version

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant