Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(html)!: support more asset sources #11138

Merged
merged 10 commits into from
Oct 31, 2024
Merged

feat(html)!: support more asset sources #11138

merged 10 commits into from
Oct 31, 2024

Conversation

bluwy
Copy link
Member

@bluwy bluwy commented Dec 1, 2022

Description

Support more tags to process as assets.

Close #7362
Close #5098

Supersedes and closes #7643 (There was a lot of conflicts that it's easier to start from scratch)

Additional context


What is the purpose of this pull request?

  • Bug fix
  • New Feature
  • Documentation update
  • Other

Before submitting the PR, please make sure you do the following

  • Read the Contributing Guidelines.
  • Read the Pull Request Guidelines and follow the Commit Convention.
  • Check that there isn't already a PR that solves the problem the same way to avoid creating a duplicate.
  • Provide a description in this PR that addresses what the PR is solving, or reference the issue that it solves (e.g. fixes #123).
  • Ideally, include relevant tests that fail without this PR but pass with it.

packages/vite/src/node/assetSource.ts Outdated Show resolved Hide resolved
packages/vite/src/node/assetSource.ts Outdated Show resolved Hide resolved
packages/vite/src/node/assetSource.ts Outdated Show resolved Hide resolved
@sapphi-red sapphi-red added feat: html p2-nice-to-have Not breaking anything but nice to have (priority) labels Dec 3, 2022
@sapphi-red sapphi-red added this to the 4.0 milestone Dec 5, 2022
@bluwy bluwy modified the milestones: 4.0, 5.0 Dec 7, 2022
@bluwy
Copy link
Member Author

bluwy commented Dec 7, 2022

Moving to the 5.0 milestone as we don't have a way to opt-out of this feature if someone needs to. Either a dedicated API, sharing with build.rollupOptions.external, <!-- @vite-ignore -->, etc which needs some discussion.

@septatrix
Copy link

Moving to the 5.0 milestone as we don't have a way to opt-out of this feature if someone needs to. Either a dedicated API, sharing with build.rollupOptions.external, <!-- @vite-ignore -->, etc which needs some discussion.

Would ?url not work as a opt-out on a per-URL basis?

I am really eager to have this feature as early as possible as it just makes Vite so much more suited for SSG. Not only image transformation as I brought up a few days ago (#11099) but also CSP hashes. Both of which are recommended for modern websites and currently missing in Vite whereas other SSG solutions support them like this eleventy blog theme.

@bluwy
Copy link
Member Author

bluwy commented Dec 10, 2022

Would ?url not work as a opt-out on a per-URL basis?

We can't ask the user to update their links to opt-out. The links should stay as is.

We'd need some time to discuss the API before we can move forward with this. (Related discussion: #3533)

@ntarbie
Copy link

ntarbie commented Dec 16, 2022

What about making it opt in? Similar to assetsInclude, an optional config for the attribute strings you need to locate and parse assets in?

@riw
Copy link

riw commented Dec 20, 2022

+1
Would be nice to have this option not only for assets but for js files, too (we use a library that lazy loads a js file from a data attribute when the element enters the viewport)

@Maytha8
Copy link

Maytha8 commented Feb 25, 2023

Moving to the 5.0 milestone as we don't have a way to opt-out of this feature if someone needs to. Either a dedicated API, sharing with build.rollupOptions.external, <!-- @vite-ignore -->, etc which needs some discussion.

Would making a new configuration option for the Vite config file fix this issue?

export interface UserConfig {
  // ...
  /**
   * Configure which HTML tags and attributes to use as asset sources.
   */
  assetSources?: AssetSourcesOptions
  // ...
}
export interface AssetSourcesOptions {
  [tag: string]: {
    [attribute: string]: boolean
  }
}

Default configuration would be: (this matches what is currently present in the code)

// ...
assetSources: {
  audio: {src: false},
  embed: {src: false},
  img: {src: true, srcset: true},
  input: {src: false},
  object: {src: false},
  source: {src: true, srcset: true},
  track: {src: false},
  video: {poster: true, src: true},
  image: {href: true, 'xlink:href': true},
  use: {href: true, 'xlink:href': true},
  link: {href: true, imagesrcset: false},
  meta: {content: false},
}
// ...

I'm new to contributing to pull requests, so forgive me if I do/say something dumb.

Copy link

@Maytha8 Maytha8 left a comment

Choose a reason for hiding this comment

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

I think it's a much cleaner implementation of finding asset sources in HTML than what is currently in the codebase.

fdbeirao added a commit to CodeFab-io/homepage that referenced this pull request Apr 20, 2023
Can't add the og:image yet due to vitejs/vite#11138 😔
@bluwy
Copy link
Member Author

bluwy commented May 14, 2023

Would making a new configuration option for the Vite config file fix this issue?

Sorry for not getting back, this slipped through my notifications 😅 This would indeed be a solution too but ideally we want to keep the configuration internally until needed.


In different news, in the last meeting we discussed that we would introduce resolve.external (#6582) as a way to externalize things in dev and build. And ideally it would cover HTML too (similar PR: #11854).

I'm still (secretly) hoping we would support <!-- @vite-ignore --> because it feels convenient in HTML files, but we can improve this later in a non-breaking way.

@bluwy
Copy link
Member Author

bluwy commented Oct 18, 2023

Dropping this off the milestone for now. We can revisit this in the next minor. Further context: #11854 (comment)

@bluwy bluwy removed this from the 5.0 milestone Oct 18, 2023
@rotu
Copy link

rotu commented Dec 22, 2023

Would love to see this landed. #7062 is very unexpected and feels like a bug. I can see how there's space for adding more build options. But treating <img href="foo.svg"> so differently from <object data="foo.svg"> for bundling with Vite is very confusing.

@bluwy bluwy marked this pull request as draft October 29, 2024 12:57
@bluwy
Copy link
Member Author

bluwy commented Oct 29, 2024

Will need to wait for #18494 before I can properly rebase the code. Not sure if this will get into the next major though, but it's close to done

@patak-dev patak-dev added this to the 6.0 milestone Oct 30, 2024
Comment on lines -280 to +279
getAttrKey(src) === 'srcset',
/* useSrcSetReplacer */ false,
Copy link
Member Author

Choose a reason for hiding this comment

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

I realized the script tag src is never going to be a srcset, so this can be false

@bluwy bluwy marked this pull request as ready for review October 30, 2024 16:11
@bluwy
Copy link
Member Author

bluwy commented Oct 30, 2024

This is now done. Compared to the initial implementation, I shrunk down the complexity of handled HTML elements list quite a lot. I realized we don't have to completely follow what html-loader has:

  • If the link tag has a href, it's always safe to assume that's being used as a URL, so we always process it (same as previous behaviour). html-loader added rel and itemprop checks which I don't think is needed.
  • link with imagesrcset if used is almost always guaranteed a srcset that can be safe to process, we don't have to check other attributes.
  • meta with itemprop also shouldn't change the meaning of content being a URL or not. From what I can tell, itemprop is merely additional property information and doesn't change the meta tag intent.

There may be actual reasons these were implemented in html-loader that I missed. I tried searching for links or comments for where these behaviour can be found, but I couldn't find any.

Copy link
Member

@sapphi-red sapphi-red left a comment

Choose a reason for hiding this comment

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

LGTM 👍

@sapphi-red
Copy link
Member

It would be nice to mention it in the migration guide. That more attributes are now transformed and it can be excluded by vite-ignore attribute.

@sapphi-red
Copy link
Member

/ecosystem-ci run

@vite-ecosystem-ci
Copy link

📝 Ran ecosystem CI on 1625d98: Open

suite result latest scheduled
analogjs failure success
astro failure success
histoire failure success
redwoodjs failure failure
remix failure failure
storybook failure success
sveltekit failure failure
unocss failure success
vike failure failure
vite-plugin-vue failure success
vitest failure failure

ladle, laravel, marko, nuxt, previewjs, quasar, qwik, rakkas, vite-environment-examples, vite-plugin-pwa, vite-plugin-react, vite-plugin-react-swc, vite-plugin-svelte, vite-setup-catalogue, vitepress, vuepress

Copy link
Member

@patak-dev patak-dev left a comment

Choose a reason for hiding this comment

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

awesome work

@patak-dev patak-dev merged commit 8a7af50 into main Oct 31, 2024
16 checks passed
@patak-dev patak-dev deleted the asset-source branch October 31, 2024 07:57
alexandresoro pushed a commit to alexandresoro/ouca-backend that referenced this pull request Dec 21, 2024
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [vite](https://vite.dev) ([source](https://github.com/vitejs/vite/tree/HEAD/packages/vite)) | devDependencies | major | [`5.4.11` -> `6.0.5`](https://renovatebot.com/diffs/npm/vite/5.4.11/6.0.5) |

---

### Release Notes

<details>
<summary>vitejs/vite (vite)</summary>

### [`v6.0.5`](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small605-2024-12-20-small)

[Compare Source](https://github.com/vitejs/vite/compare/v6.0.4...v6.0.5)

-   fix: esbuild regression (pin to 0.24.0) ([#&#8203;19027](https://github.com/vitejs/vite/issues/19027)) ([4359e0d](https://github.com/vitejs/vite/commit/4359e0d5b33afd6259a4dcef787cc2670e963126)), closes [#&#8203;19027](https://github.com/vitejs/vite/issues/19027)

### [`v6.0.4`](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small604-2024-12-19-small)

[Compare Source](https://github.com/vitejs/vite/compare/v6.0.3...v6.0.4)

-   fix: `this.resolve` skipSelf should not skip for different `id` or `import` ([#&#8203;18903](https://github.com/vitejs/vite/issues/18903)) ([4727320](https://github.com/vitejs/vite/commit/472732057cb2273908e1fca8aa7dc18a7e1f7c74)), closes [#&#8203;18903](https://github.com/vitejs/vite/issues/18903)
-   fix: fallback terser to main thread when function options are used ([#&#8203;18987](https://github.com/vitejs/vite/issues/18987)) ([12b612d](https://github.com/vitejs/vite/commit/12b612d8be2a18456fd94a2f0291d32d1ffb29d4)), closes [#&#8203;18987](https://github.com/vitejs/vite/issues/18987)
-   fix: merge client and ssr values for `pluginContainer.getModuleInfo` ([#&#8203;18895](https://github.com/vitejs/vite/issues/18895)) ([258cdd6](https://github.com/vitejs/vite/commit/258cdd637d1ee80a3c4571685135e89fe283f3a6)), closes [#&#8203;18895](https://github.com/vitejs/vite/issues/18895)
-   fix(css): escape double quotes in `url()` when lightningcss is used ([#&#8203;18997](https://github.com/vitejs/vite/issues/18997)) ([3734f80](https://github.com/vitejs/vite/commit/3734f8099e3922c189497ce404fe7ff2f8929ae1)), closes [#&#8203;18997](https://github.com/vitejs/vite/issues/18997)
-   fix(css): root relative import in sass modern API on Windows ([#&#8203;18945](https://github.com/vitejs/vite/issues/18945)) ([c4b532c](https://github.com/vitejs/vite/commit/c4b532cc900bf988073583511f57bd581755d5e3)), closes [#&#8203;18945](https://github.com/vitejs/vite/issues/18945)
-   fix(css): skip non css in custom sass importer ([#&#8203;18970](https://github.com/vitejs/vite/issues/18970)) ([21680bd](https://github.com/vitejs/vite/commit/21680bdf9ca7c12f677136b56e47f46469db8be2)), closes [#&#8203;18970](https://github.com/vitejs/vite/issues/18970)
-   fix(deps): update all non-major dependencies ([#&#8203;18967](https://github.com/vitejs/vite/issues/18967)) ([d88d000](https://github.com/vitejs/vite/commit/d88d0004a8e891ca6026d356695e0b319caa7fce)), closes [#&#8203;18967](https://github.com/vitejs/vite/issues/18967)
-   fix(deps): update all non-major dependencies ([#&#8203;18996](https://github.com/vitejs/vite/issues/18996)) ([2b4f115](https://github.com/vitejs/vite/commit/2b4f115129fb3fbd730a92078acb724f8527b7f7)), closes [#&#8203;18996](https://github.com/vitejs/vite/issues/18996)
-   fix(optimizer): keep NODE_ENV as-is when keepProcessEnv is `true` ([#&#8203;18899](https://github.com/vitejs/vite/issues/18899)) ([8a6bb4e](https://github.com/vitejs/vite/commit/8a6bb4e11d5c1b61511ae1e5ed3ae3c65a33b2dc)), closes [#&#8203;18899](https://github.com/vitejs/vite/issues/18899)
-   fix(ssr): recreate ssrCompatModuleRunner on restart ([#&#8203;18973](https://github.com/vitejs/vite/issues/18973)) ([7d6dd5d](https://github.com/vitejs/vite/commit/7d6dd5d1d655d173668192509f63ac4ebf7af299)), closes [#&#8203;18973](https://github.com/vitejs/vite/issues/18973)
-   chore: better validation error message for dts build ([#&#8203;18948](https://github.com/vitejs/vite/issues/18948)) ([63b82f1](https://github.com/vitejs/vite/commit/63b82f1e29a00d06a82144fd03ea8d6eff114290)), closes [#&#8203;18948](https://github.com/vitejs/vite/issues/18948)
-   chore(deps): update all non-major dependencies ([#&#8203;18916](https://github.com/vitejs/vite/issues/18916)) ([ef7a6a3](https://github.com/vitejs/vite/commit/ef7a6a35e6827b92445e5a0c2c0022616efc80dd)), closes [#&#8203;18916](https://github.com/vitejs/vite/issues/18916)
-   chore(deps): update dependency [@&#8203;rollup/plugin-node-resolve](https://github.com/rollup/plugin-node-resolve) to v16 ([#&#8203;18968](https://github.com/vitejs/vite/issues/18968)) ([62fad6d](https://github.com/vitejs/vite/commit/62fad6d79f83daf916dde866909a2a3dd0c79583)), closes [#&#8203;18968](https://github.com/vitejs/vite/issues/18968)
-   refactor: make internal invoke event to use the same interface with `handleInvoke` ([#&#8203;18902](https://github.com/vitejs/vite/issues/18902)) ([27f691b](https://github.com/vitejs/vite/commit/27f691b0c7dca2259108fe6b79583b459429bf7f)), closes [#&#8203;18902](https://github.com/vitejs/vite/issues/18902)
-   refactor: simplify manifest plugin code ([#&#8203;18890](https://github.com/vitejs/vite/issues/18890)) ([1bfe21b](https://github.com/vitejs/vite/commit/1bfe21b9440f318c940f90e425a18588595225fd)), closes [#&#8203;18890](https://github.com/vitejs/vite/issues/18890)
-   test: test `ModuleRunnerTransport` `invoke` API ([#&#8203;18865](https://github.com/vitejs/vite/issues/18865)) ([e5f5301](https://github.com/vitejs/vite/commit/e5f5301924b775837b2a1253c37f76555bce3e3e)), closes [#&#8203;18865](https://github.com/vitejs/vite/issues/18865)
-   test: test output hash changes ([#&#8203;18898](https://github.com/vitejs/vite/issues/18898)) ([bfbb130](https://github.com/vitejs/vite/commit/bfbb130fccefbe7e3880f09defb4fceacce39481)), closes [#&#8203;18898](https://github.com/vitejs/vite/issues/18898)

### [`v6.0.3`](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small603-2024-12-05-small)

[Compare Source](https://github.com/vitejs/vite/compare/v6.0.2...v6.0.3)

-   fix: handle postcss load unhandled rejections ([#&#8203;18886](https://github.com/vitejs/vite/issues/18886)) ([d5fb653](https://github.com/vitejs/vite/commit/d5fb653c15903ccf84a093f212da86f0327a9a6f)), closes [#&#8203;18886](https://github.com/vitejs/vite/issues/18886)
-   fix: make handleInvoke interface compatible with invoke ([#&#8203;18876](https://github.com/vitejs/vite/issues/18876)) ([a1dd396](https://github.com/vitejs/vite/commit/a1dd396da856401a12c921d0cd2c4e97cb63f1b5)), closes [#&#8203;18876](https://github.com/vitejs/vite/issues/18876)
-   fix: make result interfaces for `ModuleRunnerTransport#invoke` more explicit ([#&#8203;18851](https://github.com/vitejs/vite/issues/18851)) ([a75fc31](https://github.com/vitejs/vite/commit/a75fc3193d5e8d8756dfb3a046873e9c222bb6c8)), closes [#&#8203;18851](https://github.com/vitejs/vite/issues/18851)
-   fix: merge `environments.ssr.resolve` with root `ssr` config ([#&#8203;18857](https://github.com/vitejs/vite/issues/18857)) ([3104331](https://github.com/vitejs/vite/commit/310433106e1e8a0c39dc397e3eace8a71a2416c2)), closes [#&#8203;18857](https://github.com/vitejs/vite/issues/18857)
-   fix: no permission to create vite config file ([#&#8203;18844](https://github.com/vitejs/vite/issues/18844)) ([ff47778](https://github.com/vitejs/vite/commit/ff47778004d609dbeef7f192783e6f253dd66237)), closes [#&#8203;18844](https://github.com/vitejs/vite/issues/18844)
-   fix: remove CSS import in CJS correctly in some cases ([#&#8203;18885](https://github.com/vitejs/vite/issues/18885)) ([690a36f](https://github.com/vitejs/vite/commit/690a36ffdb7d6f6568f35a304b4904e7aa475f17)), closes [#&#8203;18885](https://github.com/vitejs/vite/issues/18885)
-   fix(config): bundle files referenced with imports field ([#&#8203;18887](https://github.com/vitejs/vite/issues/18887)) ([2b5926a](https://github.com/vitejs/vite/commit/2b5926a0e79ce47d22536d38eed2629d326caca0)), closes [#&#8203;18887](https://github.com/vitejs/vite/issues/18887)
-   fix(config): make stacktrace path correct when sourcemap is enabled ([#&#8203;18833](https://github.com/vitejs/vite/issues/18833)) ([20fdf21](https://github.com/vitejs/vite/commit/20fdf210ee0ac0824b2db74876527cb7f378a9e8)), closes [#&#8203;18833](https://github.com/vitejs/vite/issues/18833)
-   fix(css): rewrite url when image-set and url exist at the same time ([#&#8203;18868](https://github.com/vitejs/vite/issues/18868)) ([d59efd8](https://github.com/vitejs/vite/commit/d59efd8dfd1c5bf2e7c45c7cdb1c0abc2a05ba02)), closes [#&#8203;18868](https://github.com/vitejs/vite/issues/18868)
-   fix(deps): update all non-major dependencies ([#&#8203;18853](https://github.com/vitejs/vite/issues/18853)) ([5c02236](https://github.com/vitejs/vite/commit/5c0223636fa277d5daeb4d93c3f32d9f3cd69fc5)), closes [#&#8203;18853](https://github.com/vitejs/vite/issues/18853)
-   fix(html): allow unexpected question mark in tag name ([#&#8203;18852](https://github.com/vitejs/vite/issues/18852)) ([1b54e50](https://github.com/vitejs/vite/commit/1b54e506a44420d0c8a9e000cf45b1c4f5e33026)), closes [#&#8203;18852](https://github.com/vitejs/vite/issues/18852)
-   fix(module-runner): decode uri for file url passed to import ([#&#8203;18837](https://github.com/vitejs/vite/issues/18837)) ([88e49aa](https://github.com/vitejs/vite/commit/88e49aa0418cb3f6b579b744ba59daeda68432f3)), closes [#&#8203;18837](https://github.com/vitejs/vite/issues/18837)
-   refactor: fix logic errors found by no-unnecessary-condition rule ([#&#8203;18891](https://github.com/vitejs/vite/issues/18891)) ([ea802f8](https://github.com/vitejs/vite/commit/ea802f8f8bcf3771a35c1eaf687378613fbabb24)), closes [#&#8203;18891](https://github.com/vitejs/vite/issues/18891)
-   chore: fix duplicate attributes issue number in comment ([#&#8203;18860](https://github.com/vitejs/vite/issues/18860)) ([ffee618](https://github.com/vitejs/vite/commit/ffee61893cfe9f2b0db4aecf9ddb62ca79c80458)), closes [#&#8203;18860](https://github.com/vitejs/vite/issues/18860)

### [`v6.0.2`](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small602-2024-12-02-small)

[Compare Source](https://github.com/vitejs/vite/compare/v6.0.1...v6.0.2)

-   chore: run typecheck in unit tests ([#&#8203;18858](https://github.com/vitejs/vite/issues/18858)) ([49f20bb](https://github.com/vitejs/vite/commit/49f20bb77749ec7b44344fd9c42d593ae20c78f0)), closes [#&#8203;18858](https://github.com/vitejs/vite/issues/18858)
-   chore: update broken links in changelog ([#&#8203;18802](https://github.com/vitejs/vite/issues/18802)) ([cb754f8](https://github.com/vitejs/vite/commit/cb754f8acc1b579dae9fe70a08e3ef53984402cc)), closes [#&#8203;18802](https://github.com/vitejs/vite/issues/18802)
-   chore: update broken links in changelog ([#&#8203;18804](https://github.com/vitejs/vite/issues/18804)) ([47ec49f](https://github.com/vitejs/vite/commit/47ec49ffa170cac5d04cf2eef01f45e0b5ccde03)), closes [#&#8203;18804](https://github.com/vitejs/vite/issues/18804)
-   fix: don't store temporary vite config file in `node_modules` if deno ([#&#8203;18823](https://github.com/vitejs/vite/issues/18823)) ([a20267b](https://github.com/vitejs/vite/commit/a20267bb93118468a2e20f0f77b77ed7bfa94165)), closes [#&#8203;18823](https://github.com/vitejs/vite/issues/18823)
-   fix(css): referencing aliased svg asset with lightningcss enabled errored ([#&#8203;18819](https://github.com/vitejs/vite/issues/18819)) ([ae68958](https://github.com/vitejs/vite/commit/ae6895869157e48b32088f0a1f85d2fddb2d713f)), closes [#&#8203;18819](https://github.com/vitejs/vite/issues/18819)
-   fix(manifest): use `style.css` as a key for the style file for `cssCodesplit: false` ([#&#8203;18820](https://github.com/vitejs/vite/issues/18820)) ([ec51115](https://github.com/vitejs/vite/commit/ec511152558cb573acf55e88e5244bdead1b5a17)), closes [#&#8203;18820](https://github.com/vitejs/vite/issues/18820)
-   fix(optimizer): resolve all promises when cancelled ([#&#8203;18826](https://github.com/vitejs/vite/issues/18826)) ([d6e6194](https://github.com/vitejs/vite/commit/d6e6194706f0e3a889caa9303de2293cc0f131b2)), closes [#&#8203;18826](https://github.com/vitejs/vite/issues/18826)
-   fix(resolve): don't set builtinModules to `external` by default ([#&#8203;18821](https://github.com/vitejs/vite/issues/18821)) ([2250ffa](https://github.com/vitejs/vite/commit/2250ffac62e55c89232d745d2f99ece539be9195)), closes [#&#8203;18821](https://github.com/vitejs/vite/issues/18821)
-   fix(ssr): set `ssr.target: 'webworker'` defaults as fallback ([#&#8203;18827](https://github.com/vitejs/vite/issues/18827)) ([b39e696](https://github.com/vitejs/vite/commit/b39e69638b3e2e658ff6712be83b549b28103c3d)), closes [#&#8203;18827](https://github.com/vitejs/vite/issues/18827)
-   feat(css): format lightningcss error ([#&#8203;18818](https://github.com/vitejs/vite/issues/18818)) ([dac7992](https://github.com/vitejs/vite/commit/dac7992e8725234007c7515f86f543992874c7b8)), closes [#&#8203;18818](https://github.com/vitejs/vite/issues/18818)
-   refactor: make properties of ResolvedServerOptions and ResolvedPreviewOptions required ([#&#8203;18796](https://github.com/vitejs/vite/issues/18796)) ([51a5569](https://github.com/vitejs/vite/commit/51a5569e66bd7f0de79ac14b9e902d1382ccd0aa)), closes [#&#8203;18796](https://github.com/vitejs/vite/issues/18796)

### [`v6.0.1`](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small601-2024-11-27-small)

[Compare Source](https://github.com/vitejs/vite/compare/v6.0.0...v6.0.1)

-   fix: default empty server `proxy` prevents starting http2 server ([#&#8203;18788](https://github.com/vitejs/vite/issues/18788)) ([bbaf514](https://github.com/vitejs/vite/commit/bbaf514fb718952e0f17a15545c593125f1d1b9c)), closes [#&#8203;18788](https://github.com/vitejs/vite/issues/18788)
-   fix(manifest): do not override existing js manifest entry  ([#&#8203;18776](https://github.com/vitejs/vite/issues/18776)) ([3b0837e](https://github.com/vitejs/vite/commit/3b0837e0b997e14dacc347719353b8b0cea35bda)), closes [#&#8203;18776](https://github.com/vitejs/vite/issues/18776)
-   fix(server): close \_ssrCompatModuleRunner on server close ([#&#8203;18784](https://github.com/vitejs/vite/issues/18784)) ([9b4c410](https://github.com/vitejs/vite/commit/9b4c410dddb80c8858549355e175735976a82134)), closes [#&#8203;18784](https://github.com/vitejs/vite/issues/18784)
-   fix(server): skip hot channel client normalization for wsServer  ([#&#8203;18782](https://github.com/vitejs/vite/issues/18782)) ([cc7670a](https://github.com/vitejs/vite/commit/cc7670abaffeda1338cf3acfef2bc41a38c223a0)), closes [#&#8203;18782](https://github.com/vitejs/vite/issues/18782)
-   fix(worker): fix `applyToEnvironment` hooks on worker build ([#&#8203;18793](https://github.com/vitejs/vite/issues/18793)) ([0c6cdb0](https://github.com/vitejs/vite/commit/0c6cdb0f88d32ce041272977e786006008223f44)), closes [#&#8203;18793](https://github.com/vitejs/vite/issues/18793)
-   chore: flat v6 config file ([#&#8203;18777](https://github.com/vitejs/vite/issues/18777)) ([c7b3308](https://github.com/vitejs/vite/commit/c7b330832675ee6385ee1a8750762e496c8e18e6)), closes [#&#8203;18777](https://github.com/vitejs/vite/issues/18777)
-   chore: split changelog ([#&#8203;18787](https://github.com/vitejs/vite/issues/18787)) ([8542632](https://github.com/vitejs/vite/commit/8542632b3b205b61999b6d998928d5fb17ba90c4)), closes [#&#8203;18787](https://github.com/vitejs/vite/issues/18787)
-   chore: update changelog for v6 ([#&#8203;18773](https://github.com/vitejs/vite/issues/18773)) ([b254fac](https://github.com/vitejs/vite/commit/b254fac4aa35a3522aeafb3259e60acd050aeb51)), closes [#&#8203;18773](https://github.com/vitejs/vite/issues/18773)
-   revert: update moduleResolution value casing ([#&#8203;18409](https://github.com/vitejs/vite/issues/18409)) ([#&#8203;18774](https://github.com/vitejs/vite/issues/18774)) ([b0fc6e3](https://github.com/vitejs/vite/commit/b0fc6e3c2591a30360d3714263cf7cc0e2acbfdf)), closes [#&#8203;18409](https://github.com/vitejs/vite/issues/18409) [#&#8203;18774](https://github.com/vitejs/vite/issues/18774)

### [`v6.0.0`](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#600-2024-11-26)

[Compare Source](https://github.com/vitejs/vite/compare/v5.4.11...v6.0.0)

![Vite 6 is out!](../../docs/public/og-image-announcing-vite6.png)

Today, we're taking another big step in Vite's story. The Vite [team](https://vite.dev/team), [contributors](https://github.com/vitejs/vite/graphs/contributors), and ecosystem partners are excited to announce the release of the next Vite major:

-   **[Vite 6.0 announcement blog post](https://vite.dev/blog/announcing-vite6.html)**
-   [Docs](https://vite.dev/)
-   Translations: [简体中文](https://cn.vite.dev/), [日本語](https://ja.vite.dev/), [Español](https://es.vite.dev/), [Português](https://pt.vite.dev/), [한국어](https://ko.vite.dev/), [Deutsch](https://de.vite.dev/)
-   [Migration Guide](https://vite.dev/guide/migration.html)

We want to thank the more than [1K contributors to Vite Core](https://github.com/vitejs/vite/graphs/contributors) and the maintainers and contributors of Vite plugins, integrations, tools, and translations that have helped us craft this new major. We invite you to get involved and help us improve Vite for the whole ecosystem. Learn more at our [Contributing Guide](https://github.com/vitejs/vite/blob/main/CONTRIBUTING.md).

##### Breaking Changes

-   feat!: drop node 21 support in version ranges ([#&#8203;18729](https://github.com/vitejs/vite/issues/18729)) ([a384d8f](https://github.com/vitejs/vite/commit/a384d8fd39162190675abcfea31ba657383a3d03)), closes [#&#8203;18729](https://github.com/vitejs/vite/issues/18729)
-   fix(deps)!: update dependency dotenv-expand to v12 ([#&#8203;18697](https://github.com/vitejs/vite/issues/18697)) ([0c658de](https://github.com/vitejs/vite/commit/0c658de41f4c1576c526a8c48a8ea0a019c6311c)), closes [#&#8203;18697](https://github.com/vitejs/vite/issues/18697)
-   feat(html)!: support more asset sources ([#&#8203;11138](https://github.com/vitejs/vite/issues/11138)) ([8a7af50](https://github.com/vitejs/vite/commit/8a7af50b5ddf72f21098406e9668bc609b323899)), closes [#&#8203;11138](https://github.com/vitejs/vite/issues/11138)
-   feat(resolve)!: allow removing conditions ([#&#8203;18395](https://github.com/vitejs/vite/issues/18395)) ([d002e7d](https://github.com/vitejs/vite/commit/d002e7d05a0f23110f9185b39222819bcdfffc16)), closes [#&#8203;18395](https://github.com/vitejs/vite/issues/18395)
-   refactor!: remove fs.cachedChecks option ([#&#8203;18493](https://github.com/vitejs/vite/issues/18493)) ([94b0857](https://github.com/vitejs/vite/commit/94b085735372588d5f92c7f4a8cf68e8291f2db0)), closes [#&#8203;18493](https://github.com/vitejs/vite/issues/18493)
-   feat!: proxy bypass with WebSocket ([#&#8203;18070](https://github.com/vitejs/vite/issues/18070)) ([3c9836d](https://github.com/vitejs/vite/commit/3c9836d96f118ff5748916241bc3871a54247ad1)), closes [#&#8203;18070](https://github.com/vitejs/vite/issues/18070)
-   feat!: support `file://` resolution ([#&#8203;18422](https://github.com/vitejs/vite/issues/18422)) ([6a7e313](https://github.com/vitejs/vite/commit/6a7e313754dce5faa5cd7c1e2343448cd7f3a2a2)), closes [#&#8203;18422](https://github.com/vitejs/vite/issues/18422)
-   feat!: update to chokidar v4 ([#&#8203;18453](https://github.com/vitejs/vite/issues/18453)) ([192d555](https://github.com/vitejs/vite/commit/192d555f88bba7576e8a40cc027e8a11e006079c)), closes [#&#8203;18453](https://github.com/vitejs/vite/issues/18453)
-   feat(lib)!: use package name for css output file name ([#&#8203;18488](https://github.com/vitejs/vite/issues/18488)) ([61cbf6f](https://github.com/vitejs/vite/commit/61cbf6f2cfcd5afc91fe0a0ad56abfc36a32f1ab)), closes [#&#8203;18488](https://github.com/vitejs/vite/issues/18488)
-   fix(css)!: remove default import in ssr dev ([#&#8203;17922](https://github.com/vitejs/vite/issues/17922)) ([eccf663](https://github.com/vitejs/vite/commit/eccf663e35a17458425860895bb30b3b0613ea96)), closes [#&#8203;17922](https://github.com/vitejs/vite/issues/17922)
-   chore(deps)!: update postcss-load-config to v6 ([#&#8203;15235](https://github.com/vitejs/vite/issues/15235)) ([3a27f62](https://github.com/vitejs/vite/commit/3a27f627df278f6c9778a55f44cb347665b65204)), closes [#&#8203;15235](https://github.com/vitejs/vite/issues/15235)
-   feat(css)!: change default sass api to modern/modern-compiler ([#&#8203;17937](https://github.com/vitejs/vite/issues/17937)) ([d4e0442](https://github.com/vitejs/vite/commit/d4e0442f9d6adc70b72ea0713dc8abb4b1f75ae4)), closes [#&#8203;17937](https://github.com/vitejs/vite/issues/17937)
-   feat(css)!: load postcss config within workspace root only ([#&#8203;18440](https://github.com/vitejs/vite/issues/18440)) ([d23a493](https://github.com/vitejs/vite/commit/d23a493cc4b54a2e2b2c1337b3b1f0c9b1be311e)), closes [#&#8203;18440](https://github.com/vitejs/vite/issues/18440)
-   feat(json)!: add `json.stringify: 'auto'` and make that the default ([#&#8203;18303](https://github.com/vitejs/vite/issues/18303)) ([b80daa7](https://github.com/vitejs/vite/commit/b80daa7c0970645dca569d572892648f66c6799c)), closes [#&#8203;18303](https://github.com/vitejs/vite/issues/18303)
-   fix!: default `build.cssMinify` to `'esbuild'` for SSR ([#&#8203;15637](https://github.com/vitejs/vite/issues/15637)) ([f1d3bf7](https://github.com/vitejs/vite/commit/f1d3bf74cc7f12e759442fd7111d07e2c0262a67)), closes [#&#8203;15637](https://github.com/vitejs/vite/issues/15637)
-   chore(deps)!: migrate `fast-glob` to `tinyglobby` ([#&#8203;18243](https://github.com/vitejs/vite/issues/18243)) ([6f74a3a](https://github.com/vitejs/vite/commit/6f74a3a1b2469a24a86743d16267b0cc3653bc4a)), closes [#&#8203;18243](https://github.com/vitejs/vite/issues/18243)
-   refactor!: bump minimal terser version to 5.16.0 ([#&#8203;18209](https://github.com/vitejs/vite/issues/18209)) ([19ce525](https://github.com/vitejs/vite/commit/19ce525b974328e4668ad8c6540c2a5ea652795b)), closes [#&#8203;18209](https://github.com/vitejs/vite/issues/18209)
-   feat!: Environment API ([#&#8203;16471](https://github.com/vitejs/vite/issues/16471)) ([242f550](https://github.com/vitejs/vite/commit/242f550eb46c93896fca6b55495578921e29a8af)), closes [#&#8203;16471](https://github.com/vitejs/vite/issues/16471)

##### Features

-   feat: add support for .cur type ([#&#8203;18680](https://github.com/vitejs/vite/issues/18680)) ([5ec9eed](https://github.com/vitejs/vite/commit/5ec9eedc80bbf39a33b498198ba07ed1bd9cacc7)), closes [#&#8203;18680](https://github.com/vitejs/vite/issues/18680)
-   feat: enable HMR by default on ModuleRunner side ([#&#8203;18749](https://github.com/vitejs/vite/issues/18749)) ([4d2abc7](https://github.com/vitejs/vite/commit/4d2abc7bba95cf516ce7341d5d8f349d61b75224)), closes [#&#8203;18749](https://github.com/vitejs/vite/issues/18749)
-   feat: support `module-sync` condition when loading config if enabled ([#&#8203;18650](https://github.com/vitejs/vite/issues/18650)) ([cf5028d](https://github.com/vitejs/vite/commit/cf5028d4bf0a0d59b4a98323beaadc268204056b)), closes [#&#8203;18650](https://github.com/vitejs/vite/issues/18650)
-   feat: add `isSsrTargetWebWorker` flag to `configEnvironment` hook ([#&#8203;18620](https://github.com/vitejs/vite/issues/18620)) ([3f5fab0](https://github.com/vitejs/vite/commit/3f5fab04aa64c0e9b45068e842f033583b365de0)), closes [#&#8203;18620](https://github.com/vitejs/vite/issues/18620)
-   feat: add `ssr.resolve.mainFields` option ([#&#8203;18646](https://github.com/vitejs/vite/issues/18646)) ([a6f5f5b](https://github.com/vitejs/vite/commit/a6f5f5baca7a5d2064f5f4cb689764ad939fab4b)), closes [#&#8203;18646](https://github.com/vitejs/vite/issues/18646)
-   feat: expose default mainFields/conditions ([#&#8203;18648](https://github.com/vitejs/vite/issues/18648)) ([c12c653](https://github.com/vitejs/vite/commit/c12c653ca5fab354e0f71394e2fbe636dccf6b2f)), closes [#&#8203;18648](https://github.com/vitejs/vite/issues/18648)
-   feat: extended applyToEnvironment and perEnvironmentPlugin ([#&#8203;18544](https://github.com/vitejs/vite/issues/18544)) ([8fa70cd](https://github.com/vitejs/vite/commit/8fa70cdfa65ce8254ab8da8be0d92614126764c0)), closes [#&#8203;18544](https://github.com/vitejs/vite/issues/18544)
-   feat: show error when accessing variables not exposed in CJS build ([#&#8203;18649](https://github.com/vitejs/vite/issues/18649)) ([87c5502](https://github.com/vitejs/vite/commit/87c55022490d4710934c482abf5fbd4fcda9c3c9)), closes [#&#8203;18649](https://github.com/vitejs/vite/issues/18649)
-   feat(optimizer): allow users to specify their esbuild `platform` option ([#&#8203;18611](https://github.com/vitejs/vite/issues/18611)) ([0924879](https://github.com/vitejs/vite/commit/09248795ca79a7053b803af8977c3422f5cd5824)), closes [#&#8203;18611](https://github.com/vitejs/vite/issues/18611)
-   refactor: introduce `mergeWithDefaults` and organize how default values for config options are set ( ([0e1f437](https://github.com/vitejs/vite/commit/0e1f437d53683b57f0157ce3ff0b0f02acabb408)), closes [#&#8203;18550](https://github.com/vitejs/vite/issues/18550)
-   build: ignore cjs warning ([#&#8203;18660](https://github.com/vitejs/vite/issues/18660)) ([33b0d5a](https://github.com/vitejs/vite/commit/33b0d5a6ca18e9f7c27b0159decd84fee3859e09)), closes [#&#8203;18660](https://github.com/vitejs/vite/issues/18660)
-   feat: use a single transport for fetchModule and HMR support ([#&#8203;18362](https://github.com/vitejs/vite/issues/18362)) ([78dc490](https://github.com/vitejs/vite/commit/78dc4902ffef7f316e84d21648b04dc62dd0ae0a)), closes [#&#8203;18362](https://github.com/vitejs/vite/issues/18362)
-   feat(asset): add `?inline` and `?no-inline` queries to control inlining ([#&#8203;15454](https://github.com/vitejs/vite/issues/15454)) ([9162172](https://github.com/vitejs/vite/commit/9162172e039ae67ad4ee8dce18f04b7444f7d9de)), closes [#&#8203;15454](https://github.com/vitejs/vite/issues/15454)
-   feat(asset): inline svg in dev if within limit ([#&#8203;18581](https://github.com/vitejs/vite/issues/18581)) ([f08b146](https://github.com/vitejs/vite/commit/f08b1463db50f39b571faa871d05c92b10f3434c)), closes [#&#8203;18581](https://github.com/vitejs/vite/issues/18581)
-   feat: log complete config in debug mode ([#&#8203;18289](https://github.com/vitejs/vite/issues/18289)) ([04f6736](https://github.com/vitejs/vite/commit/04f6736fd7ac3da22141929c01a151f5a6fe4e45)), closes [#&#8203;18289](https://github.com/vitejs/vite/issues/18289)
-   feat(html): support `vite-ignore` attribute to opt-out of processing ([#&#8203;18494](https://github.com/vitejs/vite/issues/18494)) ([d951310](https://github.com/vitejs/vite/commit/d9513104e21175e1d23e0f614df55cd53291ab4e)), closes [#&#8203;18494](https://github.com/vitejs/vite/issues/18494)
-   feat: allow custom `console` in `createLogger` ([#&#8203;18379](https://github.com/vitejs/vite/issues/18379)) ([0c497d9](https://github.com/vitejs/vite/commit/0c497d9cb63bd4a6bb8e01c0e3b843890a239d23)), closes [#&#8203;18379](https://github.com/vitejs/vite/issues/18379)
-   feat: read `sec-fetch-dest` header to detect JS in transform ([#&#8203;9981](https://github.com/vitejs/vite/issues/9981)) ([e51dc40](https://github.com/vitejs/vite/commit/e51dc40b5907cf14d7aefaaf01fb8865a852ef15)), closes [#&#8203;9981](https://github.com/vitejs/vite/issues/9981)
-   feat(css): add more stricter typing of lightningcss ([#&#8203;18460](https://github.com/vitejs/vite/issues/18460)) ([b9b925e](https://github.com/vitejs/vite/commit/b9b925eb3f911ab63972124dc8ab0455449b925d)), closes [#&#8203;18460](https://github.com/vitejs/vite/issues/18460)
-   feat: add .git to deny list by default ([#&#8203;18382](https://github.com/vitejs/vite/issues/18382)) ([105ca12](https://github.com/vitejs/vite/commit/105ca12b34e466dc9de838643954a873ac1ce804)), closes [#&#8203;18382](https://github.com/vitejs/vite/issues/18382)
-   feat: add `environment::listen` ([#&#8203;18263](https://github.com/vitejs/vite/issues/18263)) ([4d5f51d](https://github.com/vitejs/vite/commit/4d5f51d13f92cc8224a028c27df12834a0667659)), closes [#&#8203;18263](https://github.com/vitejs/vite/issues/18263)
-   feat: enable dependencies discovery and pre-bundling in ssr environments ([#&#8203;18358](https://github.com/vitejs/vite/issues/18358)) ([9b21f69](https://github.com/vitejs/vite/commit/9b21f69405271f1b864fa934a96adcb0e1a2bc4d)), closes [#&#8203;18358](https://github.com/vitejs/vite/issues/18358)
-   feat: restrict characters useable for environment name ([#&#8203;18255](https://github.com/vitejs/vite/issues/18255)) ([9ab6180](https://github.com/vitejs/vite/commit/9ab6180d3a20be71eb7aedef000f8c4ae3591c40)), closes [#&#8203;18255](https://github.com/vitejs/vite/issues/18255)
-   feat: support arbitrary module namespace identifier imports from cjs deps ([#&#8203;18236](https://github.com/vitejs/vite/issues/18236)) ([4389a91](https://github.com/vitejs/vite/commit/4389a917f8f5e8e67222809fb7b166bb97f6d02c)), closes [#&#8203;18236](https://github.com/vitejs/vite/issues/18236)
-   feat: introduce RunnableDevEnvironment ([#&#8203;18190](https://github.com/vitejs/vite/issues/18190)) ([fb292f2](https://github.com/vitejs/vite/commit/fb292f226f988e80fee4f4aea878eb3d5d229022)), closes [#&#8203;18190](https://github.com/vitejs/vite/issues/18190)
-   feat: support `this.environment` in `options` and `onLog` hook ([#&#8203;18142](https://github.com/vitejs/vite/issues/18142)) ([7722c06](https://github.com/vitejs/vite/commit/7722c061646bc8587f55f560bfe06b2a9643639a)), closes [#&#8203;18142](https://github.com/vitejs/vite/issues/18142)
-   feat: expose `EnvironmentOptions` type ([#&#8203;18080](https://github.com/vitejs/vite/issues/18080)) ([35cf59c](https://github.com/vitejs/vite/commit/35cf59c9d53ef544eb5f2fe2f9ff4d6cb225e63b)), closes [#&#8203;18080](https://github.com/vitejs/vite/issues/18080)
-   feat(css): support es2023 build target for lightningcss ([#&#8203;17998](https://github.com/vitejs/vite/issues/17998)) ([1a76300](https://github.com/vitejs/vite/commit/1a76300cd16827f0640924fdc21747ce140c35fb)), closes [#&#8203;17998](https://github.com/vitejs/vite/issues/17998)

##### Performance

-   perf: reduce bundle size for `Object.keys(import.meta.glob(...))` / \`Object.values(import.meta.glob( ([ed99a2c](https://github.com/vitejs/vite/commit/ed99a2cd31e8d3c2b791885bcc4b188570539e45)), closes [#&#8203;18666](https://github.com/vitejs/vite/issues/18666)
-   perf(worker): inline worker without base64 ([#&#8203;18752](https://github.com/vitejs/vite/issues/18752)) ([90c66c9](https://github.com/vitejs/vite/commit/90c66c95aba3d2edd86637a77adc699f3fd6c1ff)), closes [#&#8203;18752](https://github.com/vitejs/vite/issues/18752)
-   perf: remove strip-ansi for a node built-in ([#&#8203;18630](https://github.com/vitejs/vite/issues/18630)) ([5182272](https://github.com/vitejs/vite/commit/5182272d52fc092a6219c8efe73ecb3f8e65a0b5)), closes [#&#8203;18630](https://github.com/vitejs/vite/issues/18630)
-   perf(css): skip style.css extraction if code-split css ([#&#8203;18470](https://github.com/vitejs/vite/issues/18470)) ([34fdb6b](https://github.com/vitejs/vite/commit/34fdb6bef558724330d2411b9666facef669b3a0)), closes [#&#8203;18470](https://github.com/vitejs/vite/issues/18470)
-   perf: call `module.enableCompileCache()` ([#&#8203;18323](https://github.com/vitejs/vite/issues/18323)) ([18f1dad](https://github.com/vitejs/vite/commit/18f1daddd125b07dcb8c32056ee0cec61bd65971)), closes [#&#8203;18323](https://github.com/vitejs/vite/issues/18323)
-   perf: use `crypto.hash` when available ([#&#8203;18317](https://github.com/vitejs/vite/issues/18317)) ([2a14884](https://github.com/vitejs/vite/commit/2a148844cf2382a5377b75066351f00207843352)), closes [#&#8203;18317](https://github.com/vitejs/vite/issues/18317)
-   build: reduce package size ([#&#8203;18517](https://github.com/vitejs/vite/issues/18517)) ([b83f60b](https://github.com/vitejs/vite/commit/b83f60b159f3b6f4a61db180fa03cc5b20bd110f)), closes [#&#8203;18517](https://github.com/vitejs/vite/issues/18517)

##### Fixes

-   fix: `createRunnableDevEnvironment` returns `RunnableDevEnvironment`, not `DevEnvironment` ([#&#8203;18673](https://github.com/vitejs/vite/issues/18673)) ([74221c3](https://github.com/vitejs/vite/commit/74221c391bffd61b9ef39b7c0f9ea2e405913a6f)), closes [#&#8203;18673](https://github.com/vitejs/vite/issues/18673)
-   fix: `getModulesByFile` should return a `serverModule` ([#&#8203;18715](https://github.com/vitejs/vite/issues/18715)) ([b80d5ec](https://github.com/vitejs/vite/commit/b80d5ecbbcc374bd8f32b2ed5ceb3cbfffaae77b)), closes [#&#8203;18715](https://github.com/vitejs/vite/issues/18715)
-   fix: catch error in full reload handler ([#&#8203;18713](https://github.com/vitejs/vite/issues/18713)) ([a10e741](https://github.com/vitejs/vite/commit/a10e7410656d3614cbfd07ba772776ff334a8d60)), closes [#&#8203;18713](https://github.com/vitejs/vite/issues/18713)
-   fix: display pre-transform error details ([#&#8203;18764](https://github.com/vitejs/vite/issues/18764)) ([554f45f](https://github.com/vitejs/vite/commit/554f45f4d820c57c0874ebe48ef2fddfafdd0750)), closes [#&#8203;18764](https://github.com/vitejs/vite/issues/18764)
-   fix: exit code on `SIGTERM` ([#&#8203;18741](https://github.com/vitejs/vite/issues/18741)) ([cc55e36](https://github.com/vitejs/vite/commit/cc55e36dd39fef134568f53acc66514cbb7175ea)), closes [#&#8203;18741](https://github.com/vitejs/vite/issues/18741)
-   fix: expose missing `InterceptorOptions` type ([#&#8203;18766](https://github.com/vitejs/vite/issues/18766)) ([6252c60](https://github.com/vitejs/vite/commit/6252c6035695365c93773fbe06a4b2a307e86368)), closes [#&#8203;18766](https://github.com/vitejs/vite/issues/18766)
-   fix: log error when send in module runner failed ([#&#8203;18753](https://github.com/vitejs/vite/issues/18753)) ([ba821bb](https://github.com/vitejs/vite/commit/ba821bb63eca6d8a9199ee2253ef2607375f5702)), closes [#&#8203;18753](https://github.com/vitejs/vite/issues/18753)
-   fix(client): overlay not appearing when multiple vite clients were loaded ([#&#8203;18647](https://github.com/vitejs/vite/issues/18647)) ([27d70b5](https://github.com/vitejs/vite/commit/27d70b5fa61f1c1a836d52809549cb57569f42a4)), closes [#&#8203;18647](https://github.com/vitejs/vite/issues/18647)
-   fix(deps): update all non-major dependencies ([#&#8203;18691](https://github.com/vitejs/vite/issues/18691)) ([f005461](https://github.com/vitejs/vite/commit/f005461ecce89ada21cb0c021f7af460b5479736)), closes [#&#8203;18691](https://github.com/vitejs/vite/issues/18691)
-   fix(html): fix inline proxy modules invalidation ([#&#8203;18696](https://github.com/vitejs/vite/issues/18696)) ([8ab04b7](https://github.com/vitejs/vite/commit/8ab04b70ada119fbca2fc5a53c36f233423febbe)), closes [#&#8203;18696](https://github.com/vitejs/vite/issues/18696)
-   fix(module-runner): make evaluator optional ([#&#8203;18672](https://github.com/vitejs/vite/issues/18672)) ([fd1283f](https://github.com/vitejs/vite/commit/fd1283fe27cc1a19b5c7d9d72664832e4daa1bbf)), closes [#&#8203;18672](https://github.com/vitejs/vite/issues/18672)
-   fix(optimizer): detect npm / yarn / pnpm dependency changes correctly ([#&#8203;17336](https://github.com/vitejs/vite/issues/17336)) ([#&#8203;18560](https://github.com/vitejs/vite/issues/18560)) ([818cf3e](https://github.com/vitejs/vite/commit/818cf3e7bf1b6c2dc56e7cd8f056bc1d185c2cd7)), closes [#&#8203;17336](https://github.com/vitejs/vite/issues/17336) [#&#8203;18560](https://github.com/vitejs/vite/issues/18560)
-   fix(optimizer): trigger onCrawlEnd after manual included deps are registered ([#&#8203;18733](https://github.com/vitejs/vite/issues/18733)) ([dc60410](https://github.com/vitejs/vite/commit/dc6041099ccd5767764fb8c99a169869bbd13f16)), closes [#&#8203;18733](https://github.com/vitejs/vite/issues/18733)
-   fix(optimizer): workaround firefox's false warning for no sources source map ([#&#8203;18665](https://github.com/vitejs/vite/issues/18665)) ([473424e](https://github.com/vitejs/vite/commit/473424ee8d6b743c1565bf0749deb5d9fbedcea7)), closes [#&#8203;18665](https://github.com/vitejs/vite/issues/18665)
-   fix(ssr): replace `__vite_ssr_identity__` with `(0, ...)` and inject `;` between statements ([#&#8203;18748](https://github.com/vitejs/vite/issues/18748)) ([94546be](https://github.com/vitejs/vite/commit/94546be18354a457bced5107aa31533b09e304ec)), closes [#&#8203;18748](https://github.com/vitejs/vite/issues/18748)
-   refactor: first character judgment replacement regexp ([#&#8203;18658](https://github.com/vitejs/vite/issues/18658)) ([58f1df3](https://github.com/vitejs/vite/commit/58f1df3288b0f9584bb413dd34b8d65671258f6f)), closes [#&#8203;18658](https://github.com/vitejs/vite/issues/18658)
-   refactor(resolve): remove `allowLinkedExternal` parameter from `tryNodeResolve` ([#&#8203;18670](https://github.com/vitejs/vite/issues/18670)) ([b74d363](https://github.com/vitejs/vite/commit/b74d3632693b6a829b4d1cdc2a9d4ba8234c093b)), closes [#&#8203;18670](https://github.com/vitejs/vite/issues/18670)
-   revert: use chokidar v3 ([#&#8203;18659](https://github.com/vitejs/vite/issues/18659)) ([49783da](https://github.com/vitejs/vite/commit/49783da298bc45f3f3c5ad4ce2fb1260ee8856bb)), closes [#&#8203;18659](https://github.com/vitejs/vite/issues/18659)
-   fix: cjs build for perEnvironmentState et al ([#&#8203;18656](https://github.com/vitejs/vite/issues/18656)) ([95c4b3c](https://github.com/vitejs/vite/commit/95c4b3c371dc7fb12c28cb1307f6f389887eb1e1)), closes [#&#8203;18656](https://github.com/vitejs/vite/issues/18656)
-   fix: include more modules to prefix-only module list ([#&#8203;18667](https://github.com/vitejs/vite/issues/18667)) ([5a2103f](https://github.com/vitejs/vite/commit/5a2103f0d486a7725c23c70710b11559c00e9b93)), closes [#&#8203;18667](https://github.com/vitejs/vite/issues/18667)
-   fix(html): externalize `rollup.external` scripts correctly ([#&#8203;18618](https://github.com/vitejs/vite/issues/18618)) ([55461b4](https://github.com/vitejs/vite/commit/55461b43329db6a5e737eab591163a8681ba9230)), closes [#&#8203;18618](https://github.com/vitejs/vite/issues/18618)
-   fix(ssr): format `ssrTransform` parse error  ([#&#8203;18644](https://github.com/vitejs/vite/issues/18644)) ([d9be921](https://github.com/vitejs/vite/commit/d9be92187cb17d740856af27d0ab60c84e04d58c)), closes [#&#8203;18644](https://github.com/vitejs/vite/issues/18644)
-   fix(ssr): preserve fetchModule error details ([#&#8203;18626](https://github.com/vitejs/vite/issues/18626)) ([866a433](https://github.com/vitejs/vite/commit/866a433a34ab2f6d2910506e781b346091de1b9e)), closes [#&#8203;18626](https://github.com/vitejs/vite/issues/18626)
-   fix: browser field should not be included by default for `consumer: 'server'` ([#&#8203;18575](https://github.com/vitejs/vite/issues/18575)) ([87b2347](https://github.com/vitejs/vite/commit/87b2347a13ea8ae8282f0f1e2233212c040bfed8)), closes [#&#8203;18575](https://github.com/vitejs/vite/issues/18575)
-   fix: use `server.perEnvironmentStartEndDuringDev` ([#&#8203;18549](https://github.com/vitejs/vite/issues/18549)) ([fe30349](https://github.com/vitejs/vite/commit/fe30349d350ef08bccd56404ccc3e6d6e0a2e156)), closes [#&#8203;18549](https://github.com/vitejs/vite/issues/18549)
-   fix(client): detect ws close correctly ([#&#8203;18548](https://github.com/vitejs/vite/issues/18548)) ([637d31b](https://github.com/vitejs/vite/commit/637d31bcc59d964e51f7969093cc369deee88ca1)), closes [#&#8203;18548](https://github.com/vitejs/vite/issues/18548)
-   fix(resolve): run ensureVersionQuery for SSR ([#&#8203;18591](https://github.com/vitejs/vite/issues/18591)) ([63207e5](https://github.com/vitejs/vite/commit/63207e5d0fbedc8ddddb7d1faaa8ea9a45a118d4)), closes [#&#8203;18591](https://github.com/vitejs/vite/issues/18591)
-   refactor(resolve): remove `environmentsOptions` parameter ([#&#8203;18590](https://github.com/vitejs/vite/issues/18590)) ([3ef0bf1](https://github.com/vitejs/vite/commit/3ef0bf19a3457c46395bdcb2201bbf32807d7231)), closes [#&#8203;18590](https://github.com/vitejs/vite/issues/18590)
-   fix: allow nested dependency selector to be used for `optimizeDeps.include` for SSR ([#&#8203;18506](https://github.com/vitejs/vite/issues/18506)) ([826c81a](https://github.com/vitejs/vite/commit/826c81a40bb25914d55cd2e96b548f1a2c384a19)), closes [#&#8203;18506](https://github.com/vitejs/vite/issues/18506)
-   fix: asset `new URL(,import.meta.url)` match ([#&#8203;18194](https://github.com/vitejs/vite/issues/18194)) ([5286a90](https://github.com/vitejs/vite/commit/5286a90a3c1b693384f99903582a1f70b7b44945)), closes [#&#8203;18194](https://github.com/vitejs/vite/issues/18194)
-   fix: close watcher if it's disabled ([#&#8203;18521](https://github.com/vitejs/vite/issues/18521)) ([85bd0e9](https://github.com/vitejs/vite/commit/85bd0e9b0dc637c7645f2b56f93071d6e1ec149c)), closes [#&#8203;18521](https://github.com/vitejs/vite/issues/18521)
-   fix(config): write temporary vite config to node_modules ([#&#8203;18509](https://github.com/vitejs/vite/issues/18509)) ([72eaef5](https://github.com/vitejs/vite/commit/72eaef5300d20b7163050461733c3208a4013e1e)), closes [#&#8203;18509](https://github.com/vitejs/vite/issues/18509)
-   fix(css): `cssCodeSplit` uses the current environment configuration ([#&#8203;18486](https://github.com/vitejs/vite/issues/18486)) ([eefe895](https://github.com/vitejs/vite/commit/eefe8957167681b85f0e1b07bc5feefa307cccb0)), closes [#&#8203;18486](https://github.com/vitejs/vite/issues/18486)
-   fix(json): don't `json.stringify` arrays ([#&#8203;18541](https://github.com/vitejs/vite/issues/18541)) ([fa50b03](https://github.com/vitejs/vite/commit/fa50b03390dae280293174f65f850522599b9ab7)), closes [#&#8203;18541](https://github.com/vitejs/vite/issues/18541)
-   fix(less): prevent rebasing `@import url(...)` ([#&#8203;17857](https://github.com/vitejs/vite/issues/17857)) ([aec5fdd](https://github.com/vitejs/vite/commit/aec5fdd72e3aeb2aa26796001b98f3f330be86d1)), closes [#&#8203;17857](https://github.com/vitejs/vite/issues/17857)
-   fix(lib): only resolve css bundle name if have styles ([#&#8203;18530](https://github.com/vitejs/vite/issues/18530)) ([5d6dc49](https://github.com/vitejs/vite/commit/5d6dc491b6bb78613694eaf686e2e305b71af5e1)), closes [#&#8203;18530](https://github.com/vitejs/vite/issues/18530)
-   fix(scss): improve error logs ([#&#8203;18522](https://github.com/vitejs/vite/issues/18522)) ([3194a6a](https://github.com/vitejs/vite/commit/3194a6a60714a3978f5e4b39d6223f32a8dc01ef)), closes [#&#8203;18522](https://github.com/vitejs/vite/issues/18522)
-   refactor: client-only top-level warmup ([#&#8203;18524](https://github.com/vitejs/vite/issues/18524)) ([a50ff60](https://github.com/vitejs/vite/commit/a50ff6000bca46a6fe429f2c3a98c486ea5ebc8e)), closes [#&#8203;18524](https://github.com/vitejs/vite/issues/18524)
-   fix: `define` in environment config was not working ([#&#8203;18515](https://github.com/vitejs/vite/issues/18515)) ([052799e](https://github.com/vitejs/vite/commit/052799e8939cfcdd7a7ff48daf45a766bf6cc546)), closes [#&#8203;18515](https://github.com/vitejs/vite/issues/18515)
-   fix: consider URLs with any protocol to be external ([#&#8203;17369](https://github.com/vitejs/vite/issues/17369)) ([a0336bd](https://github.com/vitejs/vite/commit/a0336bd5197bb4427251be4c975e30fb596c658f)), closes [#&#8203;17369](https://github.com/vitejs/vite/issues/17369)
-   fix: use picomatch to align with tinyglobby ([#&#8203;18503](https://github.com/vitejs/vite/issues/18503)) ([437795d](https://github.com/vitejs/vite/commit/437795db8307ce4491d066bcaaa5bd9432193773)), closes [#&#8203;18503](https://github.com/vitejs/vite/issues/18503)
-   fix(build): apply resolve.external/noExternal to server environments ([#&#8203;18495](https://github.com/vitejs/vite/issues/18495)) ([5a967cb](https://github.com/vitejs/vite/commit/5a967cb596c7c4b0548be1d9025bc1e34b36169a)), closes [#&#8203;18495](https://github.com/vitejs/vite/issues/18495)
-   fix(config): remove error if require resolve to esm ([#&#8203;18437](https://github.com/vitejs/vite/issues/18437)) ([f886f75](https://github.com/vitejs/vite/commit/f886f75396cdb5a43ec5377bbbaaffc0e8ae03e9)), closes [#&#8203;18437](https://github.com/vitejs/vite/issues/18437)
-   refactor: separate tsconfck caches per config in a weakmap ([#&#8203;17317](https://github.com/vitejs/vite/issues/17317)) ([b9b01d5](https://github.com/vitejs/vite/commit/b9b01d57fdaf5d291c78a8156e17b534c8c51eb4)), closes [#&#8203;17317](https://github.com/vitejs/vite/issues/17317)
-   fix: handle warmup glob hang ([#&#8203;18462](https://github.com/vitejs/vite/issues/18462)) ([409fa5c](https://github.com/vitejs/vite/commit/409fa5c9dee0e394bcdc3b111f5b2e4261131ca0)), closes [#&#8203;18462](https://github.com/vitejs/vite/issues/18462)
-   fix: return the same instance of ModuleNode for the same EnvironmentModuleNode ([#&#8203;18455](https://github.com/vitejs/vite/issues/18455)) ([5ead461](https://github.com/vitejs/vite/commit/5ead461b374d76ceb134063477eaf3f97fe3da97)), closes [#&#8203;18455](https://github.com/vitejs/vite/issues/18455)
-   fix: set scripts imported by HTML moduleSideEffects=true ([#&#8203;18411](https://github.com/vitejs/vite/issues/18411)) ([2ebe4b4](https://github.com/vitejs/vite/commit/2ebe4b44430dd311028f72520ac977bb202ce50b)), closes [#&#8203;18411](https://github.com/vitejs/vite/issues/18411)
-   fix: use websocket to test server liveness before client reload ([#&#8203;17891](https://github.com/vitejs/vite/issues/17891)) ([7f9f8c6](https://github.com/vitejs/vite/commit/7f9f8c6851d1eb49a72dcb6c134873148a2e81eb)), closes [#&#8203;17891](https://github.com/vitejs/vite/issues/17891)
-   fix(css): `cssCodeSplit` in `environments.xxx.build` is invalid ([#&#8203;18464](https://github.com/vitejs/vite/issues/18464)) ([993e71c](https://github.com/vitejs/vite/commit/993e71c4cb227bd8c347b918f52ccd83f85a645a)), closes [#&#8203;18464](https://github.com/vitejs/vite/issues/18464)
-   fix(css): make sass types work with sass-embedded ([#&#8203;18459](https://github.com/vitejs/vite/issues/18459)) ([89f8303](https://github.com/vitejs/vite/commit/89f8303e727791aa7be6f35833a708b6a50e9120)), closes [#&#8203;18459](https://github.com/vitejs/vite/issues/18459)
-   fix(deps): update all non-major dependencies ([#&#8203;18484](https://github.com/vitejs/vite/issues/18484)) ([2ec12df](https://github.com/vitejs/vite/commit/2ec12df98d07eb4c986737e86a4a9f8066724658)), closes [#&#8203;18484](https://github.com/vitejs/vite/issues/18484)
-   fix(manifest): non entry CSS chunk src was wrong ([#&#8203;18133](https://github.com/vitejs/vite/issues/18133)) ([c148676](https://github.com/vitejs/vite/commit/c148676c90dc4823bc6bdeb8ba1e36386c5d9654)), closes [#&#8203;18133](https://github.com/vitejs/vite/issues/18133)
-   fix(module-runner): delay function eval until module runner instantiation ([#&#8203;18480](https://github.com/vitejs/vite/issues/18480)) ([472afbd](https://github.com/vitejs/vite/commit/472afbd010db3f1c7a59826c7bf4067191b7f48a)), closes [#&#8203;18480](https://github.com/vitejs/vite/issues/18480)
-   fix(plugins): noop if config hook returns same config reference ([#&#8203;18467](https://github.com/vitejs/vite/issues/18467)) ([bd540d5](https://github.com/vitejs/vite/commit/bd540d52eb609ca12dad8e2f3fe8011821bda878)), closes [#&#8203;18467](https://github.com/vitejs/vite/issues/18467)
-   fix: add typing to `CSSOptions.preprocessorOptions` ([#&#8203;18001](https://github.com/vitejs/vite/issues/18001)) ([7eeb6f2](https://github.com/vitejs/vite/commit/7eeb6f2f97abf5dfc71c225b9cff9779baf2ed2f)), closes [#&#8203;18001](https://github.com/vitejs/vite/issues/18001)
-   fix(dev): prevent double URL encoding in server.open on macOS ([#&#8203;18443](https://github.com/vitejs/vite/issues/18443)) ([56b7176](https://github.com/vitejs/vite/commit/56b71768f3ee498962fba898804086299382bb59)), closes [#&#8203;18443](https://github.com/vitejs/vite/issues/18443)
-   fix(preview): set resolvedUrls null after close ([#&#8203;18445](https://github.com/vitejs/vite/issues/18445)) ([65014a3](https://github.com/vitejs/vite/commit/65014a32ef618619c5a34b729d67340d9253bdd5)), closes [#&#8203;18445](https://github.com/vitejs/vite/issues/18445)
-   fix(ssr): inject identity function at the top ([#&#8203;18449](https://github.com/vitejs/vite/issues/18449)) ([0ab20a3](https://github.com/vitejs/vite/commit/0ab20a3ee26eacf302415b3087732497d0a2f358)), closes [#&#8203;18449](https://github.com/vitejs/vite/issues/18449)
-   fix(ssr): preserve source maps for hoisted imports (fix [#&#8203;16355](https://github.com/vitejs/vite/issues/16355)) ([#&#8203;16356](https://github.com/vitejs/vite/issues/16356)) ([8e382a6](https://github.com/vitejs/vite/commit/8e382a6a1fed2cd41051b81f9cd9c94b484352a5)), closes [#&#8203;16355](https://github.com/vitejs/vite/issues/16355) [#&#8203;16356](https://github.com/vitejs/vite/issues/16356)
-   fix: augment hash for CSS files to prevent chromium erroring by loading previous files ([#&#8203;18367](https://github.com/vitejs/vite/issues/18367)) ([a569f42](https://github.com/vitejs/vite/commit/a569f42ee93229308be7a327b7a71e79f3d58b01)), closes [#&#8203;18367](https://github.com/vitejs/vite/issues/18367)
-   fix: more robust plugin.sharedDuringBuild ([#&#8203;18351](https://github.com/vitejs/vite/issues/18351)) ([47b1270](https://github.com/vitejs/vite/commit/47b12706ce2d0c009d6078a61e16e81a04c9f49c)), closes [#&#8203;18351](https://github.com/vitejs/vite/issues/18351)
-   fix(cli): `--watch` should not override `build.watch` options ([#&#8203;18390](https://github.com/vitejs/vite/issues/18390)) ([b2965c8](https://github.com/vitejs/vite/commit/b2965c8e9f74410bc8047a05528c74b68a3856d7)), closes [#&#8203;18390](https://github.com/vitejs/vite/issues/18390)
-   fix(css): don't transform sass function calls with namespace ([#&#8203;18414](https://github.com/vitejs/vite/issues/18414)) ([dbb2604](https://github.com/vitejs/vite/commit/dbb260499f894d495bcff3dcdf5635d015a2f563)), closes [#&#8203;18414](https://github.com/vitejs/vite/issues/18414)
-   fix(deps): update `open` dependency to 10.1.0 ([#&#8203;18349](https://github.com/vitejs/vite/issues/18349)) ([5cca4bf](https://github.com/vitejs/vite/commit/5cca4bfd3202c7aea690acf63f60bfe57fa165de)), closes [#&#8203;18349](https://github.com/vitejs/vite/issues/18349)
-   fix(deps): update all non-major dependencies ([#&#8203;18345](https://github.com/vitejs/vite/issues/18345)) ([5552583](https://github.com/vitejs/vite/commit/5552583a2272cd4208b30ad60e99d984e34645f0)), closes [#&#8203;18345](https://github.com/vitejs/vite/issues/18345)
-   fix(ssr): `this` in exported function should be `undefined` ([#&#8203;18329](https://github.com/vitejs/vite/issues/18329)) ([bae6a37](https://github.com/vitejs/vite/commit/bae6a37628c4870f3db92351e8af2a7b4a07e248)), closes [#&#8203;18329](https://github.com/vitejs/vite/issues/18329)
-   fix(worker): rewrite rollup `output.format` with `worker.format` on worker build error ([#&#8203;18165](https://github.com/vitejs/vite/issues/18165)) ([dc82334](https://github.com/vitejs/vite/commit/dc823347bb857a9f63eee7e027a52236d7e331e0)), closes [#&#8203;18165](https://github.com/vitejs/vite/issues/18165)
-   fix: `injectQuery` double encoding ([#&#8203;18246](https://github.com/vitejs/vite/issues/18246)) ([2c5f948](https://github.com/vitejs/vite/commit/2c5f948d0646f6a0237570ab5d36b06d31cb94c9)), closes [#&#8203;18246](https://github.com/vitejs/vite/issues/18246)
-   fix: add position to import analysis resolve exception ([#&#8203;18344](https://github.com/vitejs/vite/issues/18344)) ([0fe95d4](https://github.com/vitejs/vite/commit/0fe95d4a71930cf55acd628efef59e6eae0f77f7)), closes [#&#8203;18344](https://github.com/vitejs/vite/issues/18344)
-   fix: destroy the runner when runnable environment is closed ([#&#8203;18282](https://github.com/vitejs/vite/issues/18282)) ([5212d09](https://github.com/vitejs/vite/commit/5212d09579a82bc09b149c77e996d0e5c3972455)), closes [#&#8203;18282](https://github.com/vitejs/vite/issues/18282)
-   fix: handle yarn command fail when root does not exist ([#&#8203;18141](https://github.com/vitejs/vite/issues/18141)) ([460aaff](https://github.com/vitejs/vite/commit/460aaffbf134a9eda6e092a564afc2eeebf8f935)), closes [#&#8203;18141](https://github.com/vitejs/vite/issues/18141)
-   fix: make it easier to configure environment runner ([#&#8203;18273](https://github.com/vitejs/vite/issues/18273)) ([fb35a78](https://github.com/vitejs/vite/commit/fb35a7800e21ed2c6f9d0f843898afa1fcc87795)), closes [#&#8203;18273](https://github.com/vitejs/vite/issues/18273)
-   fix(assets): make srcset parsing HTML spec compliant ([#&#8203;16323](https://github.com/vitejs/vite/issues/16323)) ([#&#8203;18242](https://github.com/vitejs/vite/issues/18242)) ([0e6d4a5](https://github.com/vitejs/vite/commit/0e6d4a5e23cdfb2ec433f687e455b9827269527c)), closes [#&#8203;16323](https://github.com/vitejs/vite/issues/16323) [#&#8203;18242](https://github.com/vitejs/vite/issues/18242)
-   fix(css): dont remove JS chunk for pure CSS chunk when the export is used ([#&#8203;18307](https://github.com/vitejs/vite/issues/18307)) ([889bfc0](https://github.com/vitejs/vite/commit/889bfc0ada6d6cd356bb7a92efdce96298f82fef)), closes [#&#8203;18307](https://github.com/vitejs/vite/issues/18307)
-   fix(deps): bump tsconfck ([#&#8203;18322](https://github.com/vitejs/vite/issues/18322)) ([67783b2](https://github.com/vitejs/vite/commit/67783b2d5513e013bf74844186eb9b2b70d17d5c)), closes [#&#8203;18322](https://github.com/vitejs/vite/issues/18322)
-   fix(deps): update all non-major dependencies ([#&#8203;18292](https://github.com/vitejs/vite/issues/18292)) ([5cac054](https://github.com/vitejs/vite/commit/5cac0544dca2764f0114aac38e9922a0c13d7ef4)), closes [#&#8203;18292](https://github.com/vitejs/vite/issues/18292)
-   fix(hmr): don't try to rewrite imports for direct CSS soft invalidation ([#&#8203;18252](https://github.com/vitejs/vite/issues/18252)) ([a03bb0e](https://github.com/vitejs/vite/commit/a03bb0e2ba35af314c57fc98600bb76566592239)), closes [#&#8203;18252](https://github.com/vitejs/vite/issues/18252)
-   fix(middleware-mode): call all hot.listen when server restart ([#&#8203;18261](https://github.com/vitejs/vite/issues/18261)) ([007773b](https://github.com/vitejs/vite/commit/007773b550e7c6bcaeb8d88970fd6dfe999d5a4a)), closes [#&#8203;18261](https://github.com/vitejs/vite/issues/18261)
-   fix(optimizer): don't externalize transitive dep package name with asset extension ([#&#8203;18152](https://github.com/vitejs/vite/issues/18152)) ([fafc7e2](https://github.com/vitejs/vite/commit/fafc7e28d3395292fbc2f2355417dcc15871ab1e)), closes [#&#8203;18152](https://github.com/vitejs/vite/issues/18152)
-   fix(resolve): fix resolve cache key for external conditions ([#&#8203;18332](https://github.com/vitejs/vite/issues/18332)) ([93d286c](https://github.com/vitejs/vite/commit/93d286c4c1af0b379002a6ff495e82bb87acd65c)), closes [#&#8203;18332](https://github.com/vitejs/vite/issues/18332)
-   fix(resolve): fix resolve cache to consider `conditions` and more ([#&#8203;18302](https://github.com/vitejs/vite/issues/18302)) ([2017a33](https://github.com/vitejs/vite/commit/2017a330f5576dfc9db1538e0b899a1776cd100a)), closes [#&#8203;18302](https://github.com/vitejs/vite/issues/18302)
-   fix(types): add more overload to `defineConfig` ([#&#8203;18299](https://github.com/vitejs/vite/issues/18299)) ([94e34cf](https://github.com/vitejs/vite/commit/94e34cf1dfe6fdb331b6508e830b2cc446000aac)), closes [#&#8203;18299](https://github.com/vitejs/vite/issues/18299)
-   fix: asset import should skip handling data URIs ([#&#8203;18163](https://github.com/vitejs/vite/issues/18163)) ([70813c7](https://github.com/vitejs/vite/commit/70813c7f05fc9a45d102a53514ecac23831e6d6b)), closes [#&#8203;18163](https://github.com/vitejs/vite/issues/18163)
-   fix: cache the runnable environment module runner ([#&#8203;18215](https://github.com/vitejs/vite/issues/18215)) ([95020ab](https://github.com/vitejs/vite/commit/95020ab49e12d143262859e095025cf02423c1d9)), closes [#&#8203;18215](https://github.com/vitejs/vite/issues/18215)
-   fix: call `this.hot.close` for non-ws HotChannel ([#&#8203;18212](https://github.com/vitejs/vite/issues/18212)) ([bad0ccc](https://github.com/vitejs/vite/commit/bad0cccee80c02fa309f274220f6d324d03c3b19)), closes [#&#8203;18212](https://github.com/vitejs/vite/issues/18212)
-   fix: close HotChannel on environment close ([#&#8203;18206](https://github.com/vitejs/vite/issues/18206)) ([2d148e3](https://github.com/vitejs/vite/commit/2d148e347e8fbcc6f0e4e627a20acc81d9ced3e0)), closes [#&#8203;18206](https://github.com/vitejs/vite/issues/18206)
-   fix: require serialization for `HMRConnection.send` on implementation side ([#&#8203;18186](https://github.com/vitejs/vite/issues/18186)) ([9470011](https://github.com/vitejs/vite/commit/9470011570503a917021915c47e6a2f36aae16b5)), closes [#&#8203;18186](https://github.com/vitejs/vite/issues/18186)
-   fix: use `config.consumer` instead of `options?.ssr` / `config.build.ssr` ([#&#8203;18140](https://github.com/vitejs/vite/issues/18140)) ([21ec1ce](https://github.com/vitejs/vite/commit/21ec1ce7f041efa5cd781924f7bc536ab406a197)), closes [#&#8203;18140](https://github.com/vitejs/vite/issues/18140)
-   fix(config): treat all files as ESM on deno ([#&#8203;18081](https://github.com/vitejs/vite/issues/18081)) ([c1ed8a5](https://github.com/vitejs/vite/commit/c1ed8a595a02ec7f8f5a8d23f97b2f21d3834ab1)), closes [#&#8203;18081](https://github.com/vitejs/vite/issues/18081)
-   fix(css): ensure sass compiler initialized only once ([#&#8203;18128](https://github.com/vitejs/vite/issues/18128)) ([4cc5322](https://github.com/vitejs/vite/commit/4cc53224e9b207aa6a5a111e40ed0a0464cf37f4)), closes [#&#8203;18128](https://github.com/vitejs/vite/issues/18128)
-   fix(css): fix lightningcss dep url resolution with custom root ([#&#8203;18125](https://github.com/vitejs/vite/issues/18125)) ([eb08f60](https://github.com/vitejs/vite/commit/eb08f605ddadef99a5d68f55de143e3e47c91618)), closes [#&#8203;18125](https://github.com/vitejs/vite/issues/18125)
-   fix(css): fix missing source file warning with sass modern api custom importer ([#&#8203;18113](https://github.com/vitejs/vite/issues/18113)) ([d7763a5](https://github.com/vitejs/vite/commit/d7763a5615a238cb1b5dceb7bdfc4aac7678fb0a)), closes [#&#8203;18113](https://github.com/vitejs/vite/issues/18113)
-   fix(data-uri): only match ids starting with `data:` ([#&#8203;18241](https://github.com/vitejs/vite/issues/18241)) ([ec0efe8](https://github.com/vitejs/vite/commit/ec0efe8a06d0271ef0154f38fb9beabcd4b1bd89)), closes [#&#8203;18241](https://github.com/vitejs/vite/issues/18241)
-   fix(deps): update all non-major dependencies ([#&#8203;18170](https://github.com/vitejs/vite/issues/18170)) ([c8aea5a](https://github.com/vitejs/vite/commit/c8aea5ae0af90dc6796ef3bdd612d1eb819f157b)), closes [#&#8203;18170](https://github.com/vitejs/vite/issues/18170)
-   fix(deps): upgrade rollup 4.22.4+ to ensure avoiding XSS ([#&#8203;18180](https://github.com/vitejs/vite/issues/18180)) ([ea1d0b9](https://github.com/vitejs/vite/commit/ea1d0b9af9b28b57166d4ca67bece21650221a04)), closes [#&#8203;18180](https://github.com/vitejs/vite/issues/18180)
-   fix(html): make build-html plugin work with `sharedPlugins` ([#&#8203;18214](https://github.com/vitejs/vite/issues/18214)) ([34041b9](https://github.com/vitejs/vite/commit/34041b9d8ea39aa9138d0c2417bfbe39cc9aabdc)), closes [#&#8203;18214](https://github.com/vitejs/vite/issues/18214)
-   fix(mixedModuleGraph): handle undefined id in getModulesByFile ([#&#8203;18201](https://github.com/vitejs/vite/issues/18201)) ([768a50f](https://github.com/vitejs/vite/commit/768a50f7ac668dbf876feef557d8c0f8ff32b8ff)), closes [#&#8203;18201](https://github.com/vitejs/vite/issues/18201)
-   fix(optimizer): re-optimize when changing config `webCompatible` ([#&#8203;18221](https://github.com/vitejs/vite/issues/18221)) ([a44b0a2](https://github.com/vitejs/vite/commit/a44b0a2690812788aaaba00fd3acd2c6fa36669b)), closes [#&#8203;18221](https://github.com/vitejs/vite/issues/18221)
-   fix(ssr): fix source map remapping with multiple sources ([#&#8203;18150](https://github.com/vitejs/vite/issues/18150)) ([e003a2c](https://github.com/vitejs/vite/commit/e003a2ca73b04648e14ebf40f3616838e2da3d6d)), closes [#&#8203;18150](https://github.com/vitejs/vite/issues/18150)
-   fix(vite): refactor "module cache" to "evaluated modules", pass down module to "runInlinedModule" (# ([e83beff](https://github.com/vitejs/vite/commit/e83beff596072f9c7a42f6e2410f154668981d71)), closes [#&#8203;18092](https://github.com/vitejs/vite/issues/18092)
-   fix: avoid DOM Clobbering gadget in `getRelativeUrlFromDocument` ([#&#8203;18115](https://github.com/vitejs/vite/issues/18115)) ([ade1d89](https://github.com/vitejs/vite/commit/ade1d89660e17eedfd35652165b0c26905259fad)), closes [#&#8203;18115](https://github.com/vitejs/vite/issues/18115)
-   fix: fs raw query ([#&#8203;18112](https://github.com/vitejs/vite/issues/18112)) ([9d2413c](https://github.com/vitejs/vite/commit/9d2413c8b64bfb1dfd953340b4e1b5972d5440aa)), closes [#&#8203;18112](https://github.com/vitejs/vite/issues/18112)
-   fix(preload): throw error preloading module as well ([#&#8203;18098](https://github.com/vitejs/vite/issues/18098)) ([ba56cf4](https://github.com/vitejs/vite/commit/ba56cf43b5480f8519349f7d7fe60718e9af5f1a)), closes [#&#8203;18098](https://github.com/vitejs/vite/issues/18098)
-   fix: allow scanning exports from `script module` in svelte ([#&#8203;18063](https://github.com/vitejs/vite/issues/18063)) ([7d699aa](https://github.com/vitejs/vite/commit/7d699aa98155cbf281e3f7f6a8796dcb3b4b0fd6)), closes [#&#8203;18063](https://github.com/vitejs/vite/issues/18063)
-   fix: ensure req.url matches moduleByEtag URL to avoid incorrect 304 ([#&#8203;17997](https://github.com/vitejs/vite/issues/17997)) ([abf04c3](https://github.com/vitejs/vite/commit/abf04c3a84f4d9962a6f9697ca26cd639fa76e87)), closes [#&#8203;17997](https://github.com/vitejs/vite/issues/17997)
-   fix: incorrect environment consumer option resolution ([#&#8203;18079](https://github.com/vitejs/vite/issues/18079)) ([0e3467e](https://github.com/vitejs/vite/commit/0e3467e503aef45119260fe75b399b26f7a80b66)), closes [#&#8203;18079](https://github.com/vitejs/vite/issues/18079)
-   fix: store backwards compatible `ssrModule` and `ssrError` ([#&#8203;18031](https://github.com/vitejs/vite/issues/18031)) ([cf8ced5](https://github.com/vitejs/vite/commit/cf8ced56ea4932e917e2c4ef3d04a87f0ab4f20b)), closes [#&#8203;18031](https://github.com/vitejs/vite/issues/18031)
-   fix(build): declare `preload-helper` has no side effects ([#&#8203;18057](https://github.com/vitejs/vite/issues/18057)) ([587ad7b](https://github.com/vitejs/vite/commit/587ad7b17beba50279eaf46b06c5bf5559c4f36e)), closes [#&#8203;18057](https://github.com/vitejs/vite/issues/18057)
-   fix(css): fallback to mainthread if logger or pkgImporter option is set for sass ([#&#8203;18071](https://github.com/vitejs/vite/issues/18071)) ([d81dc59](https://github.com/vitejs/vite/commit/d81dc59473b1053bf48c45a9d45f87ee6ecf2c02)), closes [#&#8203;18071](https://github.com/vitejs/vite/issues/18071)
-   fix(dynamicImportVars): correct glob pattern for paths with parentheses ([#&#8203;17940](https://github.com/vitejs/vite/issues/17940)) ([2a391a7](https://github.com/vitejs/vite/commit/2a391a7df6e5b4a8d9e8313fba7ddf003df41e12)), closes [#&#8203;17940](https://github.com/vitejs/vite/issues/17940)
-   fix(html): escape html attribute ([#&#8203;18067](https://github.com/vitejs/vite/issues/18067)) ([5983f36](https://github.com/vitejs/vite/commit/5983f366d499f74d473097154bbbcc8e51476dc4)), closes [#&#8203;18067](https://github.com/vitejs/vite/issues/18067)
-   fix(preload): allow ignoring dep errors ([#&#8203;18046](https://github.com/vitejs/vite/issues/18046)) ([3fb2889](https://github.com/vitejs/vite/commit/3fb28896d916e03cef1b5bd6877ac184c7ec8003)), closes [#&#8203;18046](https://github.com/vitejs/vite/issues/18046)

##### Chore

-   chore: add 5.4.x changelogs ([#&#8203;18768](https://github.com/vitejs/vite/issues/18768)) ([26b58c8](https://github.com/vitejs/vite/commit/26b58c8130f232dcd4e839a337bbe478352f23ab)), closes [#&#8203;18768](https://github.com/vitejs/vite/issues/18768)
-   chore: add some comments about mimes ([#&#8203;18705](https://github.com/vitejs/vite/issues/18705)) ([f07e9b9](https://github.com/vitejs/vite/commit/f07e9b9d01d790c727edc2497304f07b1ef5d28f)), closes [#&#8203;18705](https://github.com/vitejs/vite/issues/18705)
-   chore(deps): update all non-major dependencies ([#&#8203;18746](https://github.com/vitejs/vite/issues/18746)) ([0ad16e9](https://github.com/vitejs/vite/commit/0ad16e92d57453d9e5392c90fd06bda947be9de6)), closes [#&#8203;18746](https://github.com/vitejs/vite/issues/18746)
-   docs: rename `HotUpdateContext` to `HotUpdateOptions` ([#&#8203;18718](https://github.com/vitejs/vite/issues/18718)) ([824c347](https://github.com/vitejs/vite/commit/824c347fa21aaf5bbf811994385b790db4287ab0)), closes [#&#8203;18718](https://gith…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
breaking change feat: html p2-nice-to-have Not breaking anything but nice to have (priority)
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

Add import directive for html attributes Custom html attributes resolving
8 participants