Skip to content

Latest commit

 

History

History
2932 lines (2073 loc) · 371 KB

CHANGELOG.md

File metadata and controls

2932 lines (2073 loc) · 371 KB

5.3.6 (2024-09-16)

  • fix: avoid DOM Clobbering gadget in getRelativeUrlFromDocument (#18115) (2691bb3), closes #18115
  • fix: fs raw query (#18112) (4573a6f), closes #18112

5.3.5 (2024-07-25)

  • refactor(asset): remove rollup 3 public file watch workaround (#16331) (66bdb1d), closes #16331
  • fix: make server type less restrictive (fix #17627) (#17628) (b55c32f), closes #17627 #17628
  • fix: show error if vite client cannot be loaded (#17419) (db5ab1d), closes #17419
  • fix(build): env output is not stable (#17748) (b240a83), closes #17748
  • fix(client): fix vite error path (#17744) (3c1bde3), closes #17744
  • fix(css): resolve url aliases with fragments (fix: #17690) (#17691) (d906d3f)
  • fix(deps): update all non-major dependencies (#17629) (93281b0), closes #17629
  • fix(importMetaGlob): handle alias that starts with hash (#17743) (b58b423), closes #17743
  • fix(ssrTransform): sourcemaps with multiple sources (#17677) (f321fa8), closes #17677
  • chore: extend commit hash (#17709) (4fc9b64), closes #17709
  • chore(deps): update all non-major dependencies (#17734) (9983731), closes #17734
  • chore(deps): update typescript (#17699) (df5ceb3), closes #17699
  • revert: fix(logger): truncate log over 5000 characters long (#16581) (#17729) (f4f488f), closes #16581 #17729

5.3.4 (2024-07-16)

  • fix: update Terser type definitions (fix #17668) (#17669) (b723a75), closes #17668 #17669
  • fix(build): skip preload treeshaking for nested braces (#17687) (4be96b4), closes #17687
  • fix(css): include .css?url in assets field of manifest (#17623) (1465b20), closes #17623
  • fix(worker): nested inlined worker always fallbacked to data URI worker instead of using blob worker (07bc489), closes #17509
  • refactor: replace includes with logical operations (#17620) (c4a2227), closes #17620
  • chore: add callback to http-proxy.d.ts jsdoc (#17646) (d8a5d70), closes #17646

5.3.3 (2024-07-03)

  • fix: lazily evaluate __vite__mapDeps files (#17602) (dafff4a), closes #17602
  • fix(deps): update all non-major dependencies (#17590) (012490c), closes #17590
  • fix(lib): remove pure CSS dynamic import (#17601) (055f1c1), closes #17601
  • fix(proxy): replace changeOrigin changes in 5.3.0 with new rewriteWsOrigin option (#17563) (14c3d49), closes #17563

5.3.2 (2024-06-27)

  • fix(client): uniform variable location (#17528) (a8e2f6f), closes #17528
  • fix(deps): update all non-major dependencies (#17494) (bf123f2), closes #17494
  • fix(typescript): correctly expand ${configDir} in tsconfig.json (#17576) (24c799b), closes #17576
  • chore: fix some comments (#17495) (ec16a5e), closes #17495
  • chore(deps): update all non-major dependencies (#17553) (a33a97f), closes #17553
  • chore(deps): update dependency eslint to v9 (#16661) (6c10662), closes #16661
  • chore(deps): update es-module-lexer to 1.5.4 (#17555) (2d6672f), closes #17555
  • refactor(optimizer): use early continues (#17551) (7c06ef0), closes #17551

5.3.1 (2024-06-14)

  • fix(build): handle preload treeshaking for braces (#17479) (d355568), closes #17479
  • fix(build): handle preload treeshaking for commas (#17472) (3e27071), closes #17472
  • fix(build): preload treeshaking ignore equal (#17480) (6ced135), closes #17480
  • chore: consolidate changelog for 5.3 (#17476) (1f09344), closes #17476

5.3.0 (2024-06-13)

Features

  • feat: asset type add bmp (#17439) (ec287f8), closes #17439
  • feat(typescript): update tsconfck to add support for ${configDir} replacement in ts 5.5 (#17350) (4835e2b), closes #17350
  • refactor(build): remove quotes from preload marker (#16562) (9853190), closes #16562
  • feat: add 'system' library format (#11256) (4102ca9), closes #11256
  • feat: add an option to not start a websocket server (#16219) (14b5ced), closes #16219
  • feat: add headTagInsertCheck warning (#16555) (9f02a9f), closes #16555
  • feat(asset): support /*@vite-ignore*/ for new URL(, import.meta.url) (#16590) (8880bc5), closes #16590
  • chore(deps): update esbuild (#17290) (5f13bf8), closes #17290

Performance

Fixes

  • fix: typo in client log (#17363) (68aa9f8), closes #17363
  • fix(ssrTransform): handle arbitrary module namespace identifiers (#17446) (0a76652), closes #17446
  • fix: gracefully shutdown preview server on SIGTERM (fix #12990) (#17333) (2207a68), closes #12990 #17333
  • fix(css): ensure order of extracted CSS (#16588) (a52ed1d), closes #16588
  • fix(deps): update all non-major dependencies (#17430) (4453d35), closes #17430
  • fix(build): allow dynamic import treeshaking when injecting preload (#14221) (f43f71f), closes #14221
  • fix(css): handle lightningcss minification in Deno (#17372) (b3f5bd1), closes #17372
  • fix(css): handle url replacing when preprocessing with lightningcss (#17364) (6fbb5e0), closes #17364
  • fix(ssr): remove pure CSS dynamic import (#17371) (67ff94b), closes #17371
  • fix(ssr): resolve interlocking circular dependency issues (#15395) (687c38b), closes #15395
  • fix: adjust import analysis behavior to match Node (#16738) (f599ab4), closes #16738
  • fix: prevent unhandledRejection if --open fails (#16726) (1f60647), closes #16726
  • fix(optimize-deps): don't externalize JS files imported with asset extensions (#16242) (4161843), closes #16242
  • fix(proxy): rewrite the origin header to match the target for ws proxy (#16558) (7b0a65e), closes #16558

Chore

  • test: disable isolate for unit test (#17448) (f16fae5), closes #17448
  • build: use esbuild to speedup building vite package (#17299) (6db2515), closes #17299
  • chore: add error recovery option to LightningCSSOptions (#17420) (e04193f), closes #17420
  • chore(deps): update dependency @rollup/plugin-commonjs to v26 (#17431) (507b3de), closes #17431
  • chore: add region comment (#17370) (a8c7083), closes #17370
  • chore(deps): update all non-major dependencies (#17373) (f2d52f1), closes #17373

Previous Changelogs

5.3.0-beta.2 (2024-06-10)

See 5.3.0-beta.2 changelog

5.3.0-beta.1 (2024-06-07)

See 5.3.0-beta.1 changelog

5.3.0-beta.0 (2024-05-30)

See 5.3.0-beta.0 changelog

5.2.12 (2024-05-28)

  • chore: move to eslint flat config (#16743) (8f16765), closes #16743
  • chore(deps): remove unused deps (#17329) (5a45745), closes #17329
  • chore(deps): update all non-major dependencies (#16722) (b45922a), closes #16722
  • fix: mention build.rollupOptions.output.manualChunks instead of build.rollupOutput.manualChunks (89378c0), closes #16721
  • fix(build): make SystemJSWrapRE match lazy (#16633) (6583ad2), closes #16633
  • fix(css): avoid generating empty JS files when JS files becomes empty but has CSS files imported (#1 (95fe5a7), closes #16078
  • fix(css): handle lightningcss compiled css in Deno (#17301) (8e4e932), closes #17301
  • fix(css): only use files the current bundle contains (#16684) (15a6ebb), closes #16684
  • fix(css): page reload was not happening with .css?raw (#16455) (8041846), closes #16455
  • fix(deps): update all non-major dependencies (#16603) (6711553), closes #16603
  • fix(deps): update all non-major dependencies (#16660) (bf2f014), closes #16660
  • fix(deps): update all non-major dependencies (#17321) (4a89766), closes #17321
  • fix(error-logging): rollup errors weren't displaying id and codeframe (#16540) (22dc196), closes #16540
  • fix(hmr): normalize the path info (#14255) (6a085d0), closes #14255
  • fix(hmr): trigger page reload when calling invalidate on root module (#16636) (2b61cc3), closes #16636
  • fix(logger): truncate log over 5000 characters long (#16581) (b0b839a), closes #16581
  • fix(optimizer): log dependencies added by plugins (#16729) (f0fb987), closes #16729
  • fix(sourcemap): improve sourcemap compatibility for vue2 (#16594) (913c040), closes #16594
  • docs: correct proxy shorthand example (#15938) (abf766e), closes #15938
  • docs: deprecate server.hot (#16741) (e7d38ab), closes #16741

5.2.11 (2024-05-02)

  • feat: improve dynamic import variable failure error message (#16519) (f8feeea), closes #16519
  • fix: dynamic-import-vars plugin normalize path issue (#16518) (f71ba5b), closes #16518
  • fix: scripts and styles were missing from built HTML on Windows (#16421) (0e93f58), closes #16421
  • fix(deps): update all non-major dependencies (#16488) (2d50be2), closes #16488
  • fix(deps): update all non-major dependencies (#16549) (2d6a13b), closes #16549
  • fix(dev): watch publicDir explicitly to include it outside the root (#16502) (4d83eb5), closes #16502
  • fix(preload): skip preload for non-static urls (#16556) (bb79c9b), closes #16556
  • fix(ssr): handle class declaration and expression name scoping (#16569) (c071eb3), closes #16569
  • fix(ssr): handle function expression name scoping (#16563) (02db947), closes #16563

5.2.10 (2024-04-20)

  • revert: perf: use workspace root for fs cache (#15712) (#16476) (77e7359), closes #15712 #16476
  • fix: add base to virtual html (#16442) (721f94d), closes #16442
  • fix: adjust esm syntax judgment logic (#16436) (af72eab), closes #16436
  • fix: don't add outDirs to watch.ignored if emptyOutDir is false (#16453) (6a127d6), closes #16453
  • fix(cspNonce): don't overwrite existing nonce values (#16415) (b872635), closes #16415
  • feat: show warning if root is in build.outDir (#16454) (11444dc), closes #16454
  • feat: write cspNonce to style tags (#16419) (8e54bbd), closes #16419
  • chore(deps): update dependency eslint-plugin-n to v17 (#16381) (6cccef7), closes #16381

5.2.9 (2024-04-15)

  • fix: fsp.rm removing files does not take effect (#16032) (b05c405), closes #16032
  • fix: fix accumulated stacks in error overlay (#16393) (102c2fd), closes #16393
  • fix(deps): update all non-major dependencies (#16376) (58a2938), closes #16376
  • chore: update region comment (#16380) (77562c3), closes #16380
  • perf: reduce size of injected __vite__mapDeps code (#16184) (c0ec6be), closes #16184
  • perf(css): only replace empty chunk if imported (#16349) (e2658ad), closes #16349

5.2.8 (2024-04-03)

  • fix: csp nonce injection when no closing tag (#16281) (#16282) (3c85c6b), closes #16281 #16282
  • fix: do not access document in /@vite/client when not defined (#16318) (646319c), closes #16318
  • fix: fix sourcemap when using object as define value (#15805) (445c4f2), closes #15805
  • fix(css): unknown file error happened with lightningcss (#16306) (01af308), closes #16306
  • fix(hmr): multiple updates happened when invalidate is called while multiple tabs open (#16307) (21cc10b), closes #16307
  • fix(scanner): duplicate modules for same id if glob is used in html-like types (#16305) (eca68fa), closes #16305
  • chore(deps): update all non-major dependencies (#16325) (a78e265), closes #16325
  • refactor: use types from sass instead of @types/sass (#16340) (4581e83), closes #16340

5.2.7 (2024-03-29)

  • chore: deprecate splitVendorChunkPlugin (#16274) (45a06da), closes #16274
  • fix: skip injecting __vite__mapDeps when it's not used (#16271) (890538a), closes #16271
  • fix(deps): update all non-major dependencies (#16258) (7caef42), closes #16258
  • fix(hmr): don't mutate module graph when collecting modules (#16302) (dfffea1), closes #16302
  • fix(hmr): trigger hmr for missing file import errored module after file creation (#16303) (ffedc06), closes #16303
  • fix(sourcemap): don't warn even if the sourcesContent is an empty string (#16273) (24e376a), closes #16273
  • feat(hmr): reload when HTML file is created/deleted (#16288) (1f53796), closes #16288

5.2.6 (2024-03-24)

  • fix: fs.deny with globs with directories (#16250) (ba5269c), closes #16250

5.2.5 (2024-03-24)

  • fix: avoid SSR requests in waitForRequestIdle (#16246) (7093f77), closes #16246
  • docs: clarify enforce vs hook.order (#16226) (3a73e48), closes #16226

5.2.4 (2024-03-23)

  • fix: dont resolve imports with malformed URI (#16244) (fbf69d5), closes #16244

5.2.3 (2024-03-22)

  • fix: handle warmup request error correctly (#16223) (d7c5256), closes #16223
  • fix: skip encode if is data uri (#16233) (8617e76), closes #16233
  • fix(optimizer): fix optimizeDeps.include glob syntax for ./* exports (#16230) (f184c80), closes #16230
  • fix(runtime): fix sourcemap with prepareStackTrace (#16220) (dad7f4f), closes #16220
  • chore: utf8 replaced with utf-8 (#16232) (9800c73), closes #16232

5.2.2 (2024-03-20)

  • fix(importAnalysis): skip encode in ssr (#16213) (e4d2d60), closes #16213

5.2.1 (2024-03-20)

5.2.0 (2024-03-20)

  • fix: update client.ts@cleanUrl to accomodate blob protocol (#16182) (1a3b1d7), closes #16182
  • fix(assets): avoid splitting , inside query parameter of image URI in srcset property (#16081) (50caf67), closes #16081
  • chore(deps): update all non-major dependencies (#16186) (842643d), closes #16186
  • perf(transformRequest): fast-path watch and sourcemap handling (#16170) (de60f1e), closes #16170
  • docs: add @shikiji/vitepress-twoslash (#16168) (6f8a320), closes #16168

5.2.0-beta.1 (2024-03-14)

  • feat: csp nonce support (#16052) (1d5eec4), closes #16052
  • feat: formalize waitForRequestsIdle (experimental) (#16135) (9888843), closes #16135
  • feat(optimizer): show a friendly warning with 404 instead of 504 outdated optimize dep (#16080) (7ee4261), closes #16080
  • fix: sideEffects: [] should work as sideEffects: false (#16152) (f377a84), closes #16152
  • fix(esbuild): preserve import.meta even if esbuild.target is set to lower versions (#16151) (6f77b2b), closes #16151
  • fix(ssr): crash on circular import (#14441) (8cd846c), closes #14441

5.2.0-beta.0 (2024-03-12)

  • chore: use @polka/compression (#16146) (592c95a), closes #16146
  • chore(deps): bump rollup to 4.13.0 (#15295) (2f95c2b), closes #15295
  • feat: accept assets to be specified as input (#16087) (75a9fc6), closes #16087
  • feat: add entry name to manifest (#15849) (6d6ae10), closes #15849
  • feat: convert overlay template to DOM (#15852) (dd49505), closes #15852
  • feat: support for self-referencing (#16068) (03b9674), closes #16068
  • feat(config): import.meta.filename/dirname support (#15888) (3efb1a1), closes #15888
  • feat(resolve): auto externalize node builtins for noExternal: true in node (#16019) (1cc88c1), closes #16019
  • feat(ssr): import.meta.filename/dirname support (#15887) (74dc73a), closes #15887
  • fix: apply correct fs restrictions for Yarn PnP when serving files from node_modules (#15957) (a149d9e), closes #15957
  • fix: encode URLs correctly (fix #15298) (#15311) (b10d162), closes #15298 #15311
  • fix: upgrade esbuild to 0.20.x (#16079) (30e5ae3), closes #16079
  • fix(css): treeshake css modules (#16051) (17d71ec), closes #16051
  • fix(hmr): call dispose before prune (#15782) (57628dc), closes #15782
  • fix(ssr): apply alias to resolvable dependencies during dev (#15602) (8e54af6), closes #15602
  • refactor: normalize cache package dir (#15546) (e030f4b), closes #15546
  • style: update overlay style on mobile (#15760) (4559ac0), closes #15760

5.1.6 (2024-03-11)

  • chore(deps): update all non-major dependencies (#16131) (a862ecb), closes #16131
  • fix: check for publicDir before checking if it is a parent directory (#16046) (b6fb323), closes #16046
  • fix: escape single quote when relative base is used (#16060) (8f74ce4), closes #16060
  • fix: handle function property extension in namespace import (#16113) (f699194), closes #16113
  • fix: server middleware mode resolve (#16122) (8403546), closes #16122
  • fix(esbuild): update tsconfck to fix bug that could cause a deadlock (#16124) (fd9de04), closes #16124
  • fix(worker): hide "The emitted file overwrites" warning if the content is same (#16094) (60dfa9e), closes #16094
  • fix(worker): throw error when circular worker import is detected and support self referencing worker (eef9da1), closes #16103
  • style(utils): remove null check (#16112) (0d2df52), closes #16112
  • refactor(runtime): share more code between runtime and main bundle (#16063) (93be84e), closes #16063

5.1.5 (2024-03-04)

  • fix: __vite__mapDeps code injection (#15732) (aff54e1), closes #15732
  • fix: analysing build chunk without dependencies (#15469) (bd52283), closes #15469
  • fix: import with query with imports field (#16085) (ab823ab), closes #16085
  • fix: normalize literal-only entry pattern (#16010) (1dccc37), closes #16010
  • fix: optimizeDeps.entries with literal-only pattern(s) (#15853) (49300b3), closes #15853
  • fix: output correct error for empty import specifier (#16055) (a9112eb), closes #16055
  • fix: upgrade esbuild to 0.20.x (#16062) (899d9b1), closes #16062
  • fix(runtime): runtime HMR affects only imported files (#15898) (57463fc), closes #15898
  • fix(scanner): respect experimentalDecorators: true (#15206) (4144781), closes #15206
  • revert: "fix: upgrade esbuild to 0.20.x" (#16072) (11cceea), closes #16072
  • refactor: share code with vite runtime (#15907) (b20d542), closes #15907
  • refactor(runtime): use functions from pathe (#16061) (aac2ef7), closes #16061
  • chore(deps): update all non-major dependencies (#16028) (7cfe80d), closes #16028

5.1.4 (2024-02-21)

  • perf: remove unnecessary regex s modifier (#15766) (8dc1b73), closes #15766
  • fix: fs cached checks disabled by default for yarn pnp (#15920) (8b11fea), closes #15920
  • fix: resolve directory correctly when fs.cachedChecks: true (#15983) (4fe971f), closes #15983
  • fix: srcSet with optional descriptor (#15905) (81b3bd0), closes #15905
  • fix(deps): update all non-major dependencies (#15959) (571a3fd), closes #15959
  • fix(watch): build watch fails when outDir is empty string (#15979) (1d263d3), closes #15979

5.1.3 (2024-02-15)

  • fix: cachedTransformMiddleware for direct css requests (#15919) (5099028), closes #15919
  • refactor(runtime): minor tweaks (#15904) (63a39c2), closes #15904
  • refactor(runtime): seal ES module namespace object instead of feezing (#15914) (4172f02), closes #15914

5.1.2 (2024-02-14)

  • fix: normalize import file path info (#15772) (306df44), closes #15772
  • fix(build): do not output build time when build fails (#15711) (added3e), closes #15711
  • fix(runtime): pass path instead of fileURL to isFilePathESM (#15908) (7b15607), closes #15908
  • fix(worker): support UTF-8 encoding in inline workers (fixes #12117) (#15866) (570e0f1), closes #12117 #15866
  • chore: update license file (#15885) (d9adf18), closes #15885
  • chore(deps): update all non-major dependencies (#15874) (d16ce5d), closes #15874
  • chore(deps): update dependency dotenv-expand to v11 (#15875) (642d528), closes #15875

5.1.1 (2024-02-09)

  • fix: empty CSS file was output when only .css?url is used (#15846) (b2873ac), closes #15846
  • fix: skip not only .js but also .mjs manifest entries (#15841) (3d860e7), closes #15841
  • chore: post 5.1 release edits (#15840) (9da6502), closes #15840

5.1.0 (2024-02-08)

Vite 5.1 is out! Read the announcement blog post at https://vitejs.dev/blog/announcing-vite5-1!

5.1.0-beta.7 (2024-02-07)

  • fix: disable fs.cachedChecks for custom watch ignore patterns (#15828) (9070be3), closes #15828
  • fix: judge next dirent cache type (#15787) (5fbeba3), closes #15787
  • fix: scan entries when the root is in node_modules (#15746) (c3e83bb), closes #15746
  • fix(config): improved warning when root path includes bad characters (#15761) (1c0dc3d), closes #15761
  • docs: fix typos in CHANGELOG (#15825) (3ee4e7b), closes #15825
  • perf: use transform cache by resolved id (#15785) (78d838a), closes #15785
  • chore: release notes (#15777) (775bb50), closes #15777

5.1.0-beta.6 (2024-02-01)

  • feat: experimental Vite Runtime API (#12165) (8b3ab07), closes #12165
  • fix: add ref() and unref() to chokidar.d.ts for typescript build to work (#15706) (6b45037), closes #15706
  • perf: simplify explicit import mark in import analysis (#15724) (2805b2d), closes #15724

5.1.0-beta.5 (2024-01-27)

  • fix: do not init optimizer during build (#15727) (a08f646), closes #15727
  • fix(deps): update all non-major dependencies (#15675) (4d9363a), closes #15675

5.1.0-beta.4 (2024-01-26)

  • perf: lazy load rollup during dev (#15621) (6f88a90), closes #15621
  • perf: use workspace root for fs cache (#15712) (8815763), closes #15712
  • chore: remove unneeded normalizePath (#15713) (92f2747), closes #15713
  • chore(proxy): update proxy error info (#15678) (09bd58d), closes #15678
  • feat: enable fs.cachedChecks by default (#15704) (a05c709), closes #15704
  • feat(optimizer): holdUntilCrawlEnd option (#15244) (b7c6629), closes #15244
  • fix: normalize prettify url (#15705) (98bc3dc), closes #15705
  • fix: windows add/delete file (3a7b650)
  • fix(build): build error message output twice (#15664) (74382b9), closes #15664
  • fix(hmr): pass id in parseImports for better debugging DX (#15707) (fb4bddc), closes #15707
  • fix(node): remove timestamp query of staticImportedUrls (#15663) (6c4bf26), closes #15663
  • fix(preview): set isPreview true (#15695) (93fce55), closes #15695

5.1.0-beta.3 (2024-01-22)

  • perf: middleware to short-circuit on 304 (#15586) (35ae4f8), closes #15586
  • perf: use thread for preprocessors (#13584) (acd795f), closes #13584
  • fix: default sideEffect option is delivered to rollup (#15665) (f6cf3d1), closes #15665
  • fix(ssr): mark builtin modules as side effect free (#15658) (526cf23), closes #15658
  • fix(ssr): support externalized builtins for webworker (#15656) (639bbd6), closes #15656
  • refactor: append tags logic in applyHtmlTransforms (#15647) (09b1517), closes #15647
  • refactor(hmr): provide a separate logger interface (#15631) (110e2e1), closes #15631

5.1.0-beta.2 (2024-01-19)

  • fix: fs deny for case insensitive systems (#15653) (89be67d), closes #15653
  • perf: don't recalculate path.dirname(mod.file) (#15623) (e459be4), closes #15623
  • perf: optimize getSortedPluginsByHook (#15624) (f08a037), closes #15624

5.1.0-beta.1 (2024-01-18)

  • fix: handle namespace import and dynamic import interop consistently (#15619) (ec8b420), closes #15619
  • fix(css): track dependencies from addWatchFile for HMR (#15608) (dfcb83d), closes #15608
  • fix(deps): update all non-major dependencies (#15603) (109fb80), closes #15603
  • fix(hmr): normalize env files path (#15584) (d0f1d2e), closes #15584
  • fix(ssr): externalize network imports during ssrLoadModule (#15599) (af2aa09), closes #15599
  • fix(types): mark hmr update internal types optional (#15606) (df8f5a5), closes #15606
  • perf: avoid parseRequest (#15617) (0cacfad), closes #15617
  • perf: avoid performance.now() call (#15634) (e43f7ee), closes #15634
  • perf: do not bind plugin hook context functions (#15610) (3b7e0c3), closes #15610
  • perf: don't recreate html hooks on each transform call (#15579) (bdb826c), closes #15579
  • perf: simplify isHtmlProxy regex (#15590) (644d120), closes #15590
  • feat: preview server add close method (#15630) (947aa53), closes #15630
  • feat: support multiple HMR clients on the server (#15340) (bf1e9c2), closes #15340
  • feat(build): set hoistTransitiveImports to false in library builds (#15595) (e6ebc7b), closes #15595
  • refactor: remove build time pre-bundling (#15184) (757844f), closes #15184

5.1.0-beta.0 (2024-01-15)

  • fix: await configResolved hooks of worker plugins (#15597) (03c8004), closes #15597
  • fix: hmr for env files, regression from #15365 (#15559) (d1b143f), closes #15365 #15559
  • fix: init dev ssr optimizer on server init (#15561) (db28b92), closes #15561
  • fix: only watch needed env files (#15365) (476e572), closes #15365
  • fix: resolvedUrls is null in plugin's configureServer after server restart (#15450) (653a48c), closes #15450
  • fix: revert package.json change should trigger server restart (#15519) (#15558) (9fc5d9c), closes #15519 #15558
  • fix: set correct isSsrBuild value in dev (#15536) (fdbe04d), closes #15536
  • fix: update javascript mime type to text/javascript (#15427) (a621de8), closes #15427
  • fix(build): normalize html path (#15554) (d0d5938), closes #15554
  • fix(css): @import with .css in node_modules importing a different package failed to resolve (#15000) (8ccf722), closes #15000
  • fix(css): .css?url support (#15259) (ed56d96), closes #15259
  • fix(css): skip url replace for function calls (#15544) (21a52e6), closes #15544
  • fix(deps): update all non-major dependencies (#15375) (ab56227), closes #15375
  • fix(esbuild): update to tsconfck 3.0.1 to fix edge cases when resolving tsconfig.extends (#15502) (1fcebeb), closes #15502
  • fix(hmr): package.json change should trigger server restart (#15519) (260ebbf), closes #15519
  • fix(hmr): make watcher ignore build.outDir (#15326) (2836276), closes #15326
  • fix(hmr): propagate fs.stat failure for hmrContext.read (#15568) (c6d240b), closes #15568
  • fix(sourcemap): sourcemap is incorrect when sourcemap has sources: [null] (#14588) (f8c6a34), closes #14588
  • feat: build.assetsInlineLimit callback (#15366) (4d1342e), closes #15366
  • feat: add '*.m4a' to client.d.ts and constants (#15471) (ebc37f6), closes #15471
  • feat: add support for .vtt type (#15538) (a5c6d3d), closes #15538
  • feat(glob-import): deprecate as option (#14420) (953e697), closes #14420
  • feat(hmr): reload for circular imports only if error (#15118) (6ace32b), closes #15118
  • feat(ssr): support external true (#10939) (e451be2), closes #10939
  • refactor: extract '_metadata.json' string to a constant (#15541) (adda370), closes #15541
  • refactor: normalize publicDir when resolving config (#15360) (ea5fdeb), closes #15360
  • refactor: remove json-stable-stringify (#15571) (b9b0816), closes #15571
  • refactor: reuse existing node utils (#15480) (17ab48a), closes #15480
  • refactor(hmr): keep buffer implementation internal, expose queueUpdate (#15486) (c029efb), closes #15486
  • perf: optimize logger (#15574) (0fb9071), closes #15574
  • chore: avoid bundling resolve dep (#15570) (ae49ac4), closes #15570
  • chore(deps): update dependency postcss-import to v16 (#15533) (36775c4), closes #15533

5.0.11 (2024-01-05)

  • fix: don't pretransform classic script links (#15361) (19e3c9a), closes #15361
  • fix: inject __vite__mapDeps code before sourcemap file comment (#15483) (d2aa096), closes #15483
  • fix(assets): avoid splitting , inside base64 value of srcset attribute (#15422) (8de7bd2), closes #15422
  • fix(html): handle offset magic-string slice error (#15435) (5ea9edb), closes #15435
  • chore(deps): update dependency strip-literal to v2 (#15475) (49d21fe), closes #15475
  • chore(deps): update tj-actions/changed-files action to v41 (#15476) (2a540ee), closes #15476

5.0.10 (2023-12-15)

  • fix: omit protocol does not require pre-transform (#15355) (d9ae1b2), closes #15355
  • fix(build): use base64 for inline SVG if it contains both single and double quotes (#15271) (1bbff16), closes #15271

5.0.9 (2023-12-14)

  • fix: htmlFallbackMiddleware for favicon (#15301) (c902545), closes #15301
  • fix: more stable hash calculation for depsOptimize (#15337) (2b39fe6), closes #15337
  • fix(scanner): catch all external files for glob imports (#15286) (129d0d0), closes #15286
  • fix(server): avoid chokidar throttling on startup (#15347) (56a5740), closes #15347
  • fix(worker): replace import.meta correctly for IIFE worker (#15321) (08d093c), closes #15321
  • feat: log re-optimization reasons (#15339) (b1a6c84), closes #15339
  • chore: temporary typo (#15329) (7b71854), closes #15329
  • perf: avoid computing paths on each request (#15318) (0506812), closes #15318
  • perf: temporary hack to avoid fs checks for /@react-refresh (#15299) (b1d6211), closes #15299

5.0.8 (2023-12-12)

  • perf: cached fs utils (#15279) (c9b61c4), closes #15279
  • fix: missing warmupRequest in transformIndexHtml (#15303) (103820f), closes #15303
  • fix: public files map will be updated on add/unlink in windows (#15317) (921ca41), closes #15317
  • fix(build): decode urls in CSS files (fix #15109) (#15246) (ea6a7a6), closes #15109 #15246
  • fix(deps): update all non-major dependencies (#15304) (bb07f60), closes #15304
  • fix(ssr): check esm file with normal file path (#15307) (1597170), closes #15307

5.0.7 (2023-12-08)

  • fix: suppress terser warning if minify disabled (#15275) (3e42611), closes #15275
  • fix: symbolic links in public dir (#15264) (ef2a024), closes #15264
  • fix(html): skip inlining icon and manifest links (#14958) (8ad81b4), closes #14958
  • chore: remove unneeded condition in getRealPath (#15267) (8e4655c), closes #15267
  • perf: cache empty optimizer result (#15245) (8409b66), closes #15245

5.0.6 (2023-12-06)

  • perf: in-memory public files check (#15195) (0f9e1bf), closes #15195
  • chore: remove unneccessary eslint-disable-next-line regexp/no-unused-capturing-group (#15247) (35a5bcf), closes #15247

5.0.5 (2023-12-04)

  • fix: emit vite:preloadError for chunks without deps (#15203) (d8001c5), closes #15203
  • fix: esbuild glob import resolve error (#15140) (676804d), closes #15140
  • fix: json error with position (#15225) (14be75f), closes #15225
  • fix: proxy html path should be encoded (#15223) (5b85040), closes #15223
  • fix(deps): update all non-major dependencies (#15233) (ad3adda), closes #15233
  • fix(hmr): don't consider CSS dep as a circular dep (#15229) (5f2cdec), closes #15229
  • feat: add '*.mov' to client.d.ts (#15189) (d93a211), closes #15189
  • feat(server): allow disabling built-in shortcuts (#15218) (7fd7c6c), closes #15218
  • chore: replace 'some' with 'includes' in resolveEnvPrefix (#15220) (ee12f30), closes #15220
  • chore: update the website url for homepage in package.json (#15181) (282bd8f), closes #15181
  • chore: update vitest to 1.0.0-beta.6 (#15194) (2fce647), closes #15194
  • refactor: make HMR agnostic to environment (#15179) (0571b7c), closes #15179
  • refactor: use dedicated regex methods (#15228) (0348137), closes #15228
  • perf: remove debug only prettifyUrl call (#15204) (73e971f), closes #15204
  • perf: skip computing sourceRoot in injectSourcesContent (#15207) (1df1fd1), closes #15207

5.0.4 (2023-11-29)

  • fix: bindCLIShortcuts to proper server (#15162) (67ac572), closes #15162
  • fix: revert "fix: js fallback sourcemap content should be using original content (#15135)" (#15178) (d2a2493), closes #15135 #15178
  • fix(define): allow define process.env (#15173) (ec401da), closes #15173
  • fix(resolve): respect order of browser in mainFields when resolving (#15137) (4a111aa), closes #15137
  • feat: preserve vite.middlewares connect instance after restarts (#15166) (9474c4b), closes #15166
  • refactor: align with Promise.withResolvers() (#15171) (642f9bc), closes #15171

5.0.3 (2023-11-28)

  • fix: generateCodeFrame infinite loop (#15093) (6619de7), closes #15093
  • fix: js fallback sourcemap content should be using original content (#15135) (227d56d), closes #15135
  • fix(css): render correct asset url when CSS chunk name is nested (#15154) (ef403c0), closes #15154
  • fix(css): use non-nested chunk name if facadeModule is not CSS file (#15155) (811e392), closes #15155
  • fix(dev): bind plugin context functions (#14569) (cb3243c), closes #14569
  • chore(deps): update all non-major dependencies (#15145) (7ff2c0a), closes #15145
  • build: handle latest json-stable-stringify replacement (#15049) (bcc4a61), closes #15049

5.0.2 (2023-11-21)

  • fix: make htmlFallback more permissive (#15059) (6fcceeb), closes #15059

5.0.1 (2023-11-21)

  • test: avoid read check when running as root (#14884) (1d9516c), closes #14884
  • perf(hmr): skip traversed modules when checking circular imports (#15034) (41e437f), closes #15034
  • fix: run htmlFallbackMiddleware for no accept header requests (#15025) (b93dfe3), closes #15025
  • fix: update type CSSModulesOptions interface (#14987) (d0b2153), closes #14987
  • fix(legacy): error in build with --watch and manifest enabled (#14450) (b9ee620), closes #14450
  • chore: add comment about crossorigin attribute for script module (#15040) (03c371e), closes #15040
  • chore: cleanup v5 beta changelog (#14694) (531d3cb), closes #14694

5.0.0 (2023-11-16)

Vite 5 is out! Read the announcement blog post here

Announcing Vite 5

Today, we mark another big milestone in Vite's path. The Vite team, contributors, and ecosystem partners, are excited to announce the release of Vite 5. Vite is now using Rollup 4, which already represents a big boost in build performance. And there are also new options to improve your dev server performance profile.

Vite 5 focuses on cleaning up the API (removing deprecated features) and streamlines several features closing long-standing issues, for example switching define to use proper AST replacements instead of regexes. We also continue to take steps to future-proof Vite (Node.js 18+ is now required, and the CJS Node API has been deprecated).

Quick links:

Docs in other languages:

Learn more at the Vite 5 announcement blog post.

Breaking changes

  • feat!: add isPreview to ConfigEnv and resolveConfig (#14855) (d195860), closes #14855
  • fix(types)!: expose httpServer with Http2SecureServer union (#14834) (ab5bb40), closes #14834
  • refactor(preview)!: use base middleware (#14818) (69737f4), closes #14818
  • fix(html)!: align html serving between dev and preview (#14756) (4f71ae8), closes #14756
  • refactor!: remove non boolean middleware mode (#14792) (deb5515), closes #14792
  • refactor(esbuild)!: remove esbuild 0.17 -> 0.18 compat (#14804) (7234021), closes #14804
  • feat(resolve)!: remove resolve.browserField (#14733) (43cc3b9), closes #14733
  • refactor!: move side effect of restart server to the caller (#8746) (521ca58), closes #8746
  • refactor(shortcuts)!: tweak shortcuts api (#14749) (0ae2e1d), closes #14749
  • fix(resolve)!: remove special .mjs handling (#14723) (2141d31), closes #14723
  • feat!: remove ssr proxy for externalized modules (#14521) (5786837), closes #14521
  • feat(build)!: inline SVGs (#14643) (5acda5e), closes #14643
  • fix!: worker.plugins is a function (#14685) (9d09dfe), closes #14685
  • refactor!: remove https flag (#14681) (5b65bfd), closes #14681
  • feat!: rollup v4 (#14508) (dee6067), closes #14508
  • refactor!: remove resolvePackageEntry and resolvePackageData APIs (#14584) (339f300), closes #14584
  • refactor!: remove exporting internal APIs (#14583) (7861a33), closes #14583
  • fix!: return 404 for resources requests outside the base path (#5657) (40fd2d9), closes #5657
  • refactor!: remove server.force (#14530) (33ecfd9), closes #14530
  • refactor!: remove jest condition (#14544) (8d18a91), closes #14544
  • feat!: deprecate cjs node api (#14278) (404f30f), closes #14278
  • feat(shortcuts)!: remove setRawMode (#14342) (536631a), closes #14342
  • fix!: put manifest files in .vite directory by default (#14230) (74fa024), closes #14230
  • feat!: allow path containing . to fallback to index.html (#14142) (1ae4cbd), closes #14142
  • feat!: bump minimum node version to 18 (#14030) (2c1a45c), closes #14030
  • fix!: avoid rewriting this (reverts #5312) (#14098) (9b7b4ed), closes #5312 #14098
  • refactor!: merge PreviewServerForHook into PreviewServer type (#14119) (e0eb07c), closes #14119
  • refactor(glob)!: remove import.meta.globEager (#14118) (fdfb61f), closes #14118
  • feat!: add extension to internal virtual modules (#14231) (9594c70), closes #14231
  • feat(css)!: remove css default export (b6c44cd)
  • fix!: update node types peer dep range (#14280) (8f87e86), closes #14280

Features

  • feat: allow providing parent httpServer on middleware mode (#14632) (e0c86d4), closes #14632
  • style(client): overlay frame show scrollbar (#14701) (8aa4134), closes #14701
  • feat: error when failed to resolve aliased import (#14973) (6a564fa), closes #14973
  • feat: add invalid rollupOptions warnings (#14909) (7c240a0), closes #14909
  • feat: skip initial clear screen if has logs (#14936) (a92bc61), closes #14936
  • feat(hmr): add full reload reason (#14914) (60a020e), closes #14914
  • feat(hmr): improve circular import updates (#14867) (b479055), closes #14867
  • feat: implement AsyncDisposable (#14648) (385d580), closes #14648
  • feat: expose parseAst and parseAstAsync from rollup (#14833) (6229485), closes #14833
  • feat: upgrade rollup to 4.2.0 and use parseAstAsync (#14821) (86a5356), closes #14821
  • feat(pluginContainer): implement watchChange hook (#14822) (9369d8d), closes #14822
  • feat(server): add warmupRequest api (#14787) (8690581), closes #14787
  • feat(define): handle replacement with esbuild (#11151) (e4c801c), closes #11151
  • feat: add a runtime warning for the old object type transformIndexHtml hook (#14791) (17fb5ee), closes #14791
  • feat: add server.warmup option (#14291) (da80372), closes #14291
  • feat: add import-meta.d.ts (#14615) (598d423), closes #14615
  • feat: add mdx as known js source (#14560) (dd213b5), closes #14560
  • feat: add off method to ViteHotContext (issue #14185) (#14518) (31333bb), closes #14185 #14518
  • feat: show better parse error in build (#14600) (84df7db), closes #14600
  • feat(optimizer): check optimizeDeps.extensions for scannable files (#14543) (23ef8a1), closes #14543
  • feat(ssr): support for ssr.resolve.conditions and ssr.resolve.externalConditions options (#14498) (d0afc39), closes #14498
  • feat: show warning to discourage putting process/global to define option (#14447) (83a56f7), closes #14447
  • feat(terser): add maxWorkers option for terserOptions (#13858) (884fc3d), closes #13858
  • feat: add generic type for plugin api (#14238) (830b26e), closes #14238
  • feat: allow passing down "null" to disable server watcher (#14208) (af5a95e), closes #14208
  • feat: improve deno and bun support (#14379) (9884308), closes #14379
  • feat: build.ssrEmitAssets out of experimental (#14055) (f88ab68), closes #14055
  • feat: ssrTransform support import assertion by default (#14202) (70a379f), closes #14202
  • feat: use import.meta.url instead of self.location (#14377) (e9b1e85), closes #14377
  • feat: warn if # in project root (#14188) (f5ba696), closes #14188
  • feat(css): stop injecting ?used (fc05454)
  • feat: export server.bindCLIShortcuts (#13675) (1a2e5e6), closes #13675
  • feat: copyPublicDir out of experimental (#14051) (443c235), closes #14051
  • feat(css): build assets with the entry name when it is an entry point (#11578) (fd9a2cc), closes #11578
  • feat(deps): upgrade rollup to 3.28.0 (#14049) (490dad8), closes #14049
  • feat(worker): support a way to name the worker (#14032) (1f214a4), closes #14032

Performance

  • perf(define): create simple regex for checks (#14788) (bd15537), closes #14788
  • perf(hmr): implement soft invalidation (#14654) (4150bcb), closes #14654
  • perf: pre transform requests while opening the browser (#12809) (96a4ce3), closes #12809
  • chore(deps): update tsconfck to 3.0.0 (#14629) (4dcf9c4), closes #14629
  • perf: reduce preload marker markup size (#14550) (6f12fd8), closes #14550
  • perf: move up external url check before fs path checks (#13639) (c2ebea1), closes #13639
  • refactor: update to tsconfck3 with lazy cache (#14234) (6e0b0ee), closes #14234
  • perf: reduce one if judgment (#14329) (09ba7c6), closes #14329
  • perf: replace startsWith with === (#14300) (75cd29c), closes #14300
  • perf: replace fromEntries with a for loop (#14041) (8b174fd), closes #14041
  • perf: use URL.canParse (#14068) (dcee6ef), closes #14068

Fixes

  • fix: caret position was incorrect (#14984) (2b4e793), closes #14984
  • fix: code frame was not generated for postcss errors (#14986) (bedfcfa), closes #14986
  • fix: don't append /@fs/ for bare imports (#14995) (2a519a1), closes #14995
  • fix: server.preTransformRequests https error (#14991) (#14993) (58ff849), closes #14991 #14993
  • fix(ssr): skip esm proxy guard for namespace imports (#14988) (82a5b11), closes #14988
  • fix: don't watch SPA fallback paths (#14953) (24c2c57), closes #14953
  • fix: handle addWatchFile in load hooks (#14967) (a0ab85b), closes #14967
  • fix: preload marker duplicate deps (#14955) (55335cc), closes #14955
  • fix: relax overlay frame regex (#14979) (0b325bb), closes #14979
  • fix(deps): update all non-major dependencies (#14961) (0bb3995), closes #14961
  • fix(esbuild): set js loader for build transpile (#14980) (80beede), closes #14980
  • fix(pluginContainer): run transform in this.load (#14965) (3f57b05), closes #14965
  • fix: server.headers after restart in middleware mode (#14905) (f9ce9db), closes #14905
  • fix: add watch in fallback file load (#14938) (b24b951), closes #14938
  • fix: injectQuery check with double slash in the url (#14910) (84c5ff6), closes #14910
  • fix(build): make build error message clearer (#14761) (350b4b2), closes #14761
  • fix(css): correctly set manifest source name and emit CSS file (#14945) (28ccede), closes #14945
  • fix(server): the server restart port should remain unchanged (#14418) (8b96e97), closes #14418
  • fix(worker): prevent inject esm in classic workers (#14918) (2687dbb), closes #14918
  • fix: file link in overlay with custom backend (#14879) (1bfb584), closes #14879
  • fix: processNodeUrl for srcset (#14870) (0873bae), closes #14870
  • fix: resovedUrls is null after server restart (#14890) (bd4d29f), closes #14890
  • fix: use latest module graph in transform middleware (#14892) (b6b382c), closes #14892
  • fix(assets): use base64 when inlining SVG with foreignObject tag (#14875) (9e20ed6), closes #14875
  • fix(build): mixed external and transpiled srcset (#14888) (b5653d3), closes #14888
  • fix(css): fix sourcemap warning in build with lightningCSS (#14871) (11b1796), closes #14871
  • fix(css): initialize lightningCSS targets when not using options (#14872) (12f9230), closes #14872
  • fix: use correct publicDir in ERR_LOAD_PUBLIC_URL (#14847) (66caef3), closes #14847
  • fix(define): correctly replace same define values (#14786) (f36fcd2), closes #14786
  • fix(deps): update all non-major dependencies (#14729) (d5d96e7), closes #14729
  • fix(worker): force rollup to build workerImportMetaUrl under watch mode (#14712) (8db40ee), closes #14712
  • fix: skip watchPackageDataPlugin for worker builds (#14762) (9babef5), closes #14762
  • fix: suppress addWatchFile invalid phase error (#14751) (c3622d7), closes #14751
  • fix(css): ensure code is valid after empty css chunk imports are removed (fix #14515) (#14517) (72f6a52), closes #14515 #14517
  • fix(html): ignore rewrite external urls (#14774) (d6d1ef1), closes #14774
  • fix(assets): fix svg inline in css url (#14714) (eef4aaa), closes #14714
  • fix(resolve): make directory package.json check best effort (#14626) (d520388), closes #14626
  • fix(assets): make timestamp invalidation lazy (#14675) (dd610b5), closes #14675
  • fix(build): add crossorigin attribute to link[rel="stylesheet"] (#12991) (6e7b25c), closes #12991
  • fix(hmr): clean importers in module graph when file is deleted (#14315) (7acb016), closes #14315
  • fix(manifest): include assets referenced in html (#14657) (f627b91), closes #14657
  • fix: avoid --open optimization if preTransformRequests is disabled (#14666) (d4f62e4), closes #14666
  • fix(dynamic-import-vars): preserve custom query string (#14459) (1f2a982), closes #14459
  • fix(hmr): add timestamp for assets in dev (#13371) (40ee245), closes #13371
  • fix(html): srcset pointing image in public dir wasn't working during dev (#14663) (4496ae7), closes #14663
  • fix(deps): update all non-major dependencies (#14635) (21017a9), closes #14635
  • fix(esbuild): handle tsconfck cache undefined (#14650) (4e763c5), closes #14650
  • fix: off-by-one bug in HTML whitespace removal (#14589) (f54e6d8), closes #14589
  • fix(html): import expression in classic script for dev (#14595) (ea47b8f), closes #14595
  • fix(html): inline style attribute not working in dev (#14592) (a4a17b8), closes #14592
  • fix(html): relative paths without leading dot wasn't rewritten (#14591) (0a38e3b), closes #14591
  • fix(proxy): correct the logic of bypass returning false (#14579) (261633a), closes #14579
  • fix(optimizer): limit bundled file name length to 170 characters (#14561) (a3b6d8d), closes #14561
  • fix: esbuild glob resolve error (#14533) (3615c68), closes #14533
  • fix: update transform error message (#14139) (e0eb304), closes #14139
  • fix(deps): update all non-major dependencies (#14510) (eb204fd), closes #14510
  • fix(deps): update all non-major dependencies (#14559) (6868480), closes #14559
  • fix(lib): esbuild helper functions injection not working with named exports (#14539) (5004d00), closes #14539
  • fix: allow path ending with .html to fallback to index.html (dae6d0a)
  • fix: handle fs.realpath.native MAX_PATH issue for Node.js <18.10 (#14487) (17c5928), closes #14487
  • fix: update .html fallback in MPA (b5637a7)
  • fix(analysis): warnings for dynamic imports that use static template literals (#14458) (ec7ee22), closes #14458
  • fix(hmr): dev mode reduce unnecessary restart (#14426) (6f9d39d), closes #14426
  • fix(import-analysis): preserve importedUrls import order (#14465) (99b0645), closes #14465
  • fix(preview): allow path containing . to fallback to index.html (fddc151)
  • fix(resolve): support submodules of optional peer deps (#14489) (f80ff77), closes #14489
  • fix: handle errors during hasWorkspacePackageJSON function (#14394) (c3e4791), closes #14394
  • fix: unify css collecting order (#11671) (20a8a15), closes #11671
  • fix(deps): update all non-major dependencies (#14092) (68638f7), closes #14092
  • fix(deps): update all non-major dependencies (#14460) (b77bff0), closes #14460
  • fix(deps): update dependency dotenv-expand to v10 (#14391) (d6bde8b), closes #14391
  • fix: omit 'plugins' since it has no effect (#13879) (64888b0), closes #13879
  • fix: typo (#14334) (30df500), closes #14334
  • fix: typo (#14337) (6ffe070), closes #14337
  • fix: use relative path for sources field (#14247) (a995907), closes #14247
  • fix(manifest): preserve pure css chunk assets (#14297) (4bf31e5), closes #14297
  • fix(resolve): support pkg?query (21bbceb)
  • fix(sourcemap): dont inject fallback sourcemap if have existing (#14370) (55a3b4f), closes #14370
  • fix(worker): inline es worker does not work in build mode (#14307) (7371c5c), closes #14307
  • fix: add source map to Web Workers (fix #14216) (#14217) (6f86de3), closes #14216 #14217
  • fix: handle sourcemap correctly when multiple line import exists (#14232) (627159d), closes #14232
  • fix: include vite/types/* in exports field (#14296) (66a97be), closes #14296
  • fix: use string manipulation instead of regex to inject esbuild helpers (#14094) (91a18c2), closes #14094
  • fix(cli): convert special base (#14283) (34826aa), closes #14283
  • fix(css): remove pure css chunk sourcemap (#14290) (2b80089), closes #14290
  • fix(css): reset render cache on renderStart (#14326) (19bf0f1), closes #14326
  • fix(css): spread lightningcss options (#14313) (80c6608), closes #14313
  • fix(optimizer): define crawlDeps after scanProcessing and optimizationResult are complete (fix #1428 (c5f6558), closes #14284 #14285
  • fix(vite): precisely check if files are in dirs (#14241) (245d186), closes #14241
  • revert: "fix(css): spread lightningcss options (#14024)" (#14209) (5778365), closes #14024 #14209
  • fix: breakpoints in JS not working (#13514) (0156bd2), closes #13514
  • fix: if host is specified check whether it is valid (#14013) (c39e6c1), closes #14013
  • fix: initWasm options should be optional (#14152) (387a6e8), closes #14152
  • fix: rollup watch crash on Windows (#13339) (4f582c9), closes #13339
  • fix: ws never connects after restarting server if server.hmr.server is set (#14127) (bd9b749), closes #14127
  • fix(client): correctly display the config file name (#14160) (61e801d), closes #14160
  • fix(css): spread lightningcss options (#14024) (63a4451), closes #14024
  • fix(css): trim esbuild's minified css (#13893) (7682a62), closes #13893
  • fix(glob): trigger HMR for glob in a package (#14117) (86cbf69), closes #14117

Cleanup

  • docs: point links in messages at https: (#14992) (d3af879), closes #14992
  • build: dont strip single line comments (#14969) (ea9ccb7), closes #14969
  • build: strip internal parameters (1168e57)
  • chore: refactor as functions (5684382)
  • chore: add PluginWithRequiredHook type & extract getHookHandler function (#14845) (997f2d5), closes #14845
  • chore(optimizedDeps): remove unused return (#14773) (9d744dd), closes #14773
  • refactor: simplify build optimizer node_env handling (#14829) (275907b), closes #14829
  • chore: fix typo (#14820) (eda1247), closes #14820
  • chore: revert "feat: show warning to discourage putting process/global to define option (#14447)" (0426910), closes #14447 #14827
  • chore: update license (#14790) (ac5d8a7), closes #14790
  • chore(shortcuts): resolve generic type error (#14802) (a090742), closes #14802
  • refactor: update es-module-lexer to 1.4.0 (#14937) (374e6fd), closes #14937
  • chore(esbuild): fix typo (#14772) (6cfc1e2), closes #14772
  • revert: remove AsyncDisposable (#14908) (b953b0d), closes #14908
  • refactor(ssr): remove unused metadata code (#14711) (c5f2d60), closes #14711
  • refactor: use dynamic import directly (#14661) (af60592), closes #14661
  • chore(config): improve the readability of warning messages (#14594) (b43b4df), closes #14594
  • build: clean generated type file (#14582) (fffe16e), closes #14582
  • build: use rollup-plugin-dts (#14571) (d89725b), closes #14571
  • refactor(css): make getEmptyChunkReplacer for unit test (#14528) (18900fd), closes #14528
  • refactor: ensure HTML is stripped of generated blank lines (#14274) (bc97091), closes #14274
  • refactor: remove unused record flatIdToExports (#14557) (7e62710), closes #14557
  • test(ssr): add import and export ordering snapshot (#14468) (ca34c64), closes #14468
  • refactor: remove CJS ssr output format (#13944) (2f60b9e), closes #13944
  • refactor: replace duplicate code with tryStatSync (#14461) (be6b0c8), closes #14461
  • refactor(config): remove unnecessary esbuild option (#13580) (67f4e52), closes #13580
  • test(ssr): proper test coverage of SSR shebang import hoisting (#14448) (fdd4669), closes #14448
  • chore(optimizer): debug info on cache dir handle process (#12858) (21a62da), closes #12858
  • refactor(css): remove export {} (98fbdc3)
  • chore: fix ts error (#14053) (6cb397f), closes #14053
  • chore: use "kB" everywhere with the correct definition (#14061) (f97ef58), closes #14061
  • chore(client): remove redundant if statement (#14137) (fe1c0b9), closes #14137
  • refactor(css): use preliminaryFileName to detect pure CSS chunks (#13974) (835249d), closes #13974

Previous Changelogs

5.0.0-beta.20 (2023-11-15)

See 5.0.0-beta.20 changelog

5.0.0-beta.19 (2023-11-14)

See 5.0.0-beta.19 changelog

5.0.0-beta.18 (2023-11-11)

See 5.0.0-beta.18 changelog

5.0.0-beta.17 (2023-11-07)

See 5.0.0-beta.17 changelog

5.0.0-beta.16 (2023-11-03)

See 5.0.0-beta.16 changelog

5.0.0-beta.15 (2023-11-01)

See 5.0.0-beta.15 changelog

5.0.0-beta.14 (2023-10-30)

See 5.0.0-beta.14 changelog

5.0.0-beta.13 (2023-10-27)

See 5.0.0-beta.13 changelog

5.0.0-beta.12 (2023-10-23)

See 5.0.0-beta.12 changelog

5.0.0-beta.11 (2023-10-19)

See 5.0.0-beta.11 changelog

5.0.0-beta.10 (2023-10-17)

See 5.0.0-beta.10 changelog

5.0.0-beta.9 (2023-10-17)

See 5.0.0-beta.9 changelog

5.0.0-beta.8 (2023-10-16)

See 5.0.0-beta.8 changelog

5.0.0-beta.7 (2023-10-12)

See 5.0.0-beta.7 changelog

5.0.0-beta.6 (2023-10-10)

See 5.0.0-beta.6 changelog

5.0.0-beta.5 (2023-10-09)

See 5.0.0-beta.5 changelog

5.0.0-beta.4 (2023-10-02)

See 5.0.0-beta.4 changelog

5.0.0-beta.3 (2023-09-25)

See 5.0.0-beta.3 changelog

5.0.0-beta.2 (2023-09-15)

See 5.0.0-beta.2 changelog

5.0.0-beta.1 (2023-09-08)

See 5.0.0-beta.1 changelog

5.0.0-beta.0 (2023-08-24)

See 5.0.0-beta.0 changelog

4.5.0 (2023-10-18)

  • feat: backport mdx as known js source (#14560) (#14670) (45595ef), closes #14560 #14670
  • feat: scan .marko files (#14669) (ed7bdc5), closes #14669
  • feat(ssr): backport ssr.resolve.conditions and ssr.resolve.externalConditions (#14498) (#14668) (520139c), closes #14498 #14668

4.4.11 (2023-10-05)

  • revert: "fix: use string manipulation instead of regex to inject esbuild helpers (54e1275), closes #14094

4.4.10 (2023-10-03)

  • fix: add source map to Web Workers (fix #14216) (#14217) (df6f32f), closes #14216 #14217
  • fix: handle errors during hasWorkspacePackageJSON function (#14394) (6f6e5de), closes #14394
  • fix: handle sourcemap correctly when multiple line import exists (#14232) (218861f), closes #14232
  • fix: if host is specified check whether it is valid (#14013) (b1b816a), closes #14013
  • fix: include vite/types/* in exports field (#14296) (40e99a1), closes #14296
  • fix: initWasm options should be optional (#14152) (119c074), closes #14152
  • fix: restore builtins list (f8b9adb)
  • fix: use string manipulation instead of regex to inject esbuild helpers (#14094) (128ad8f), closes #14094
  • fix: ws never connects after restarting server if server.hmr.server is set (#14127) (441642e), closes #14127
  • fix(analysis): warnings for dynamic imports that use static template literals (#14458) (0c6d289), closes #14458
  • fix(cli): convert special base (#14283) (d4bc0fb), closes #14283
  • fix(css): remove pure css chunk sourcemap (#14290) (cd7e033), closes #14290
  • fix(css): reset render cache on renderStart (#14326) (d334b3d), closes #14326
  • fix(glob): trigger HMR for glob in a package (#14117) (0f582bf), closes #14117
  • fix(import-analysis): preserve importedUrls import order (#14465) (269aa43), closes #14465
  • fix(manifest): preserve pure css chunk assets (#14297) (3d63ae6), closes #14297
  • fix(optimizer): define crawlDeps after scanProcessing and optimizationResult are complete (fix #1428 (fcaf749), closes #14284 #14285
  • fix(resolve): support submodules of optional peer deps (#14489) (104971d), closes #14489
  • fix(vite): precisely check if files are in dirs (#14241) (c4758d1), closes #14241
  • feat: improve deno and bun support (#14379) (8bc1f9d), closes #14379

4.4.9 (2023-08-07)

  • chore: fix eslint warnings (#14031) (4021a0e), closes #14031
  • chore(deps): update all non-major dependencies (#13938) (a1b519e), closes #13938
  • fix: dynamic import vars ignored warning (#14006) (4479431), closes #14006
  • fix(build): silence warn dynamic import module when inlineDynamicImports true (#13970) (7a77aaf), closes #13970
  • perf: improve build times and memory utilization (#14016) (9d7d45e), closes #14016
  • perf: replace startsWith with === (#14005) (f5c1224), closes #14005

4.4.8 (2023-07-31)

  • fix: modulePreload false (#13973) (488085d), closes #13973
  • fix: multiple entries with shared css and no JS (#13962) (89a3db0), closes #13962
  • fix: use file extensions on type imports so they work with moduleResolution: 'node16' (#13947) (aeef670), closes #13947
  • fix(css): enhance error message for missing preprocessor dependency (#11485) (65e5c22), closes #11485
  • fix(esbuild): fix static properties transpile when useDefineForClassFields false (#13992) (4ca7c13), closes #13992
  • fix(importAnalysis): strip url base before passing as safeModulePaths (#13712) (1ab06a8), closes #13712
  • fix(importMetaGlob): avoid unnecessary hmr of negative glob (#13646) (844451c), closes #13646
  • fix(optimizer): avoid double-commit of optimized deps when discovery is disabled (#13865) (df77991), closes #13865
  • fix(optimizer): enable experimentalDecorators by default (#13981) (f8a5ffc), closes #13981
  • perf: replace startsWith with === (#13989) (3aab14e), closes #13989
  • perf: single slash does not need to be replaced (#13980) (66f522c), closes #13980
  • perf: use Intl.DateTimeFormatter instead of toLocaleTimeString (#13951) (af53a1d), closes #13951
  • perf: use Intl.NumberFormat instead of toLocaleString (#13949) (a48bf88), closes #13949
  • perf: use magic-string hires boundary for sourcemaps (#13971) (b9a8d65), closes #13971
  • chore(reporter): remove unnecessary map (#13972) (dd9d4c1), closes #13972
  • refactor: add new overload to the type of defineConfig (#13958) (24c12fe), closes #13958

4.4.7 (2023-07-24)

  • fix: optimizeDeps.include not working with paths inside packages (#13922) (06e4f57), closes #13922
  • fix: lightningcss fails with html-proxy (#13776) (6b56094), closes #13776
  • fix: prepend config.base to vite/env path (#13941) (8e6cee8), closes #13941
  • fix(html): support import.meta.env define replacement without quotes (#13425) (883089c), closes #13425
  • fix(proxy): handle error when proxy itself errors (#13929) (4848e41), closes #13929
  • chore(eslint): allow type annotations (#13920) (d1264fd), closes #13920

4.4.6 (2023-07-21)

  • fix: constrain inject helpers for iife (#13909) (c89f677), closes #13909
  • fix: display manualChunks warning only when a function is not used (#13797) (#13798) (51c271f), closes #13797 #13798
  • fix: do not append browserHash on optimized deps during build (#13906) (0fb2340), closes #13906
  • fix: use Bun's implementation of ws instead of the bundled one (#13901) (049404c), closes #13901
  • feat(client): add guide to press Esc for closing the overlay (#13896) (da389cc), closes #13896

4.4.5 (2023-07-20)

  • fix: "EISDIR: illegal operation on a directory, realpath" error on RA… (#13655) (6bd5434), closes #13655
  • fix: transform error message add file info (#13687) (6dca41c), closes #13687
  • fix: warn when publicDir and outDir are nested (#13742) (4eb3154), closes #13742
  • fix(build): remove warning about ineffective dynamic import from node_modules (#13884) (33002dd), closes #13884
  • fix(build): style insert order for UMD builds (fix #13668) (#13669) (49a1b99), closes #13668 #13669
  • fix(deps): update all non-major dependencies (#13872) (975a631), closes #13872
  • fix(types): narrow down the return type of defineConfig (#13792) (c971f26), closes #13792
  • chore: fix typos (#13862) (f54e8da), closes #13862
  • chore: replace any with string (#13850) (4606fd8), closes #13850
  • chore(deps): update dependency prettier to v3 (#13759) (5a56941), closes #13759
  • docs: fix build.cssMinify link (#13840) (8a2a3e1), closes #13840

4.4.4 (2023-07-14)

  • chore: warning about ssr cjs format removal (#13827) (4646e9f), closes #13827
  • fix(esbuild): enable experimentalDecorators by default (#13805) (e8880f0), closes #13805
  • fix(scan): skip tsconfigRaw fallback if tsconfig is set (#13823) (b6155a1), closes #13823
  • feat(client): close vite-error-overlay with Escape key (#13795) (85bdcda), closes #13795

4.4.3 (2023-07-11)

  • fix: avoid early error when server is closed in ssr (#13787) (89d01eb), closes #13787
  • fix(deps): update all non-major dependencies (#13758) (8ead116), closes #13758
  • fix(server): remove restart guard on restart (#13789) (2a38ef7), closes #13789

4.4.2 (2023-07-07)

  • fix(css): use single postcss instance (#13738) (c02fac4), closes #13738

4.4.1 (2023-07-06)

  • fix: revert #13073, use consistent virtual module ID in module graph (#13734) (f589ac0), closes #13073 #13734
  • fix: revert import config module as data (#13731) (b0bfa01), closes #13731
  • chore: changelog notes and clean for 4.4 (#13728) (3f4e36e), closes #13728

4.4.0 (2023-07-06)

Experimental support for Lightning CSS

Starting from Vite 4.4, there is experimental support for Lightning CSS. You can opt into it by adding css.transformer: 'lightningcss' to your config file and install the optional lightningcss dev dependency. If enabled, CSS files will be processed by Lightning CSS instead of PostCSS.

Lightning CSS can also be used as the CSS minifier with build.cssMinify: 'lightningcss'.

See beta docs at the Lighting CSS guide.

esbuild 0.18 update

esbuild 0.18 contains backwards-incompatible changes to esbuild's handling of tsconfig.json files. We think they shouldn't affect Vite users, you can review #13525 for more information.

Templates for Solid and Qwik in create-vite

New starter templates have been added to create-vite for Solid and Qwik. Try them online at vite.new/solid-ts and vite.new/qwik-ts.

Korean Translation

Vite's docs are now translated to Korean, available at ko.vitejs.dev.

Features

  • feat: preview mode add keyboard shortcuts (#12968) (126e93e), closes #12968
  • feat: asset type add apng (#13294) (a11b6f6), closes #13294
  • feat: emit event to handle chunk load errors (#12084) (2eca54e), closes #12084
  • feat: import public non-asset URL (#13422) (3a98558), closes #13422
  • feat: support files for fs.allow (#12863) (4a06e66), closes #12863
  • feat(build): warn dynamic import module with a static import alongside (#12850) (127c334), closes #12850
  • feat(client): add debounce on page reload (#13545) (d080b51), closes #13545
  • feat(client): add WebSocket connections events (#13334) (eb75103), closes #13334
  • feat(config): friendly ESM file require error (#13283) (b9a6ba0), closes #13283
  • feat(css): add support for Lightning CSS (#12807) (c6c5d49), closes #12807
  • feat(css): support at import preprocessed styles (#8400) (2bd6077), closes #8400
  • feat(html): support image set in inline style (#13473) (2c0faba), closes #13473
  • feat(importMetaGlob): support sub imports pattern (#12467) (e355c9c), closes #12467
  • feat(optimizer): support glob includes (#12414) (7792515), closes #12414
  • feat!: update esbuild to 0.18.2 (#13525) (ab967c0), closes #13525

Bug Fixes

  • fix: check document before detect script rel (#13559) (be4b0c0), closes #13559
  • fix(define): stringify object parse error in build mode (#13600) (71516db), closes #13600
  • fix(deps): update all non-major dependencies (#13701) (02c6bc3), closes #13701
  • fix(esbuild): use useDefineForClassFields: false when no compilerOptions.target is declared (#13 (7ef2472), closes #13708
  • fix(pluginContainer): drop previous sourcesContent (#13722) (9310b3a), closes #13722
  • fix: lightningCSS should load external URL in CSS file (#13692) (8517645), closes #13692
  • fix: shortcut open browser when set host (#13677) (6f1c55e), closes #13677
  • fix(cli): convert the sourcemap option to boolean (fix #13638) (#13663) (d444bfe), closes #13638 #13663
  • fix(css): use esbuild legalComments config when minifying CSS (#13661) (2d9008e), closes #13661
  • fix(sourcemap): preserve original sourcesContent (#13662) (f6362b6), closes #13662
  • fix(ssr): transform superclass identifier (#13635) (c5b2c8f), closes #13635
  • fix: show error position (#13623) (90271a6), closes #13623
  • fix(hmr): only invalidate lastHMRTimestamp of importers if the invalidated module is not a HMR bou (1143e0b), closes #13024
  • fix(indexHtml): decode html URI (#13581) (f8868af), closes #13581
  • fix: avoid binding ClassExpression (#13572) (1a0c806), closes #13572
  • fix: the shortcut fails to open browser when set the host (#13579) (e0a48c5), closes #13579
  • fix(proxy): forward SSE close event (#13578) (4afbccb), closes #13578
  • fix: allow using vite as a proxy for another vite server (#13218) (711dd80), closes #13218
  • fix: await requests to before server restart (#13262) (0464398), closes #13262
  • fix: esm detection with export const { A, B } pattern (#13483) (ea1bcc9), closes #13483
  • fix: keep track of ssr version of imported modules separately (#11973) (8fe6952), closes #11973
  • fix: make optimize error available to meta-framework (#13495) (b70e783), closes #13495
  • fix: only show the listened IP when host is specified (#13412) (20b0cae), closes #13412
  • fix: race condition creation module in graph in transformRequest (#13085) (43cbbcf), closes #13085
  • fix: remove deprecated config.server.base (#13482) (dc597bd), closes #13482
  • fix: remove extra path shorten when resolving from a dir (#13381) (5503198), closes #13381
  • fix: show network URLs when --host 0.0.0.0 (#13438) (00ee8c1), closes #13438
  • fix: timestamp config dynamicImport (#13502) (6a87c65), closes #13502
  • fix: unexpected config temporary file (#13269) (ff3ce31), closes #13269
  • fix: use consistent virtual module ID in module graph (#13073) (aa1776f), closes #13073
  • fix(build): make output warning message clearer (#12924) (54ab3c8), closes #12924
  • fix(debug): import performance from perf_hooks (#13464) (d458ccd), closes #13464
  • fix(deps): update all non-major dependencies (#13059) (123ef4c), closes #13059
  • fix(deps): update all non-major dependencies (#13488) (bd09248), closes #13488
  • fix(deps): update sirv to 2.0.3 (#13057) (d814d6c), closes #13057
  • fix(mergeConfig): don't accept callback config (#13135) (998512b), closes #13135
  • fix(optimizer): include exports for css modules (#13519) (1fd9919), closes #13519
  • fix(resolve): always use module condition (#13370) (367920b), closes #13370
  • fix(ssr): fix crash when a pnpm/Yarn workspace depends on a CJS package (#9763) (9e1086b), closes #9763

Previous Changelogs

4.4.0-beta.4 (2023-07-03)

See 4.4.0-beta.4 changelog

4.4.0-beta.3 (2023-06-25)

See 4.4.0-beta.3 changelog

4.4.0-beta.2 (2023-06-22)

See 4.4.0-beta.2 changelog

4.4.0-beta.1 (2023-06-21)

See 4.4.0-beta.1 changelog

4.4.0-beta.0 (2023-06-20)

See 4.4.0-beta.0 changelog

4.3.9 (2023-05-26)

  • fix: fs.deny with leading double slash (#13348) (813ddd6), closes #13348
  • fix: optimizeDeps during build and external ids (#13274) (e3db771), closes #13274
  • fix(css): return deps if have no postcss plugins (#13344) (28923fb), closes #13344
  • fix(legacy): style insert order (#13266) (e444375), closes #13266
  • chore: revert prev release commit (2a30a07)
  • release: v4.3.9 (5c9abf7)
  • docs: optimizeDeps.needsInterop (#13323) (b34e79c), closes #13323
  • test: respect commonjs options in playgrounds (#13273) (19e8c68), closes #13273
  • refactor: simplify SSR options' if statement (#13254) (8013a66), closes #13254
  • perf(ssr): calculate stacktrace offset lazily (#13256) (906c4c1), closes #13256

4.3.8 (2023-05-18)

  • fix: avoid outdated module to crash in importAnalysis after restart (#13231) (3609e79), closes #13231
  • fix(ssr): skip updateCjsSsrExternals if legacy flag disabled (#13230) (13fc345), closes #13230

4.3.7 (2023-05-16)

  • fix: revert only watch .env files in envDir (#12587) (#13217) (0fd4616), closes #12587 #13217
  • fix(assetImportMetaUrl): allow ternary operator in template literal urls (#13121) (d5d9a31), closes #13121

4.3.6 (2023-05-15)

  • fix: avoid dev-server crash when ws proxy error (#12829) (87e1f58), closes #12829
  • fix: call tryFsResolve for relative new URL(foo, import.meta.url) (#13142) (eeb0617), closes #13142
  • fix: don't inject CSS sourcemap for direct requests (#13115) (7d80a47), closes #13115
  • fix: handle more yarn pnp load errors (#13160) (adf61d9), closes #13160
  • fix(build): declare moduleSideEffects for vite:modulepreload-polyfill (#13099) (d63129b), closes #13099
  • fix(css): respect esbuild.charset when minify (#13190) (4fd35ed), closes #13190
  • fix(server): intercept ping requests (#13117) (d06cc42), closes #13117
  • fix(ssr): stacktrace uses abs path with or without sourcemap (#12902) (88c855e), closes #12902
  • perf: skip windows absolute paths for node resolve (#13162) (e640939), closes #13162
  • chore: remove useless dep (#13165) (9a7ec98), closes #13165
  • chore(reporter): reuse clearLine (#13156) (535795a), closes #13156

4.3.5 (2023-05-05)

  • fix: location is not defined error in cleanScssBugUrl (#13100) (91d7b67), closes #13100
  • fix: unwrapId and pass ssr flag when adding to moduleGraph in this.load (#13083) (9041e19), closes #13083
  • fix(assetImportMetaUrl): reserve dynamic template literal query params (#13034) (7089528), closes #13034
  • fix(debug): skip filter object args (#13098) (d95a9af), closes #13098
  • fix(scan): handle html script tag attributes that contain ">" (#13101) (8a37de6), closes #13101
  • fix(ssr): ignore __esModule for ssrExportAll (#13084) (8a8ea1d), closes #13084

4.3.4 (2023-05-02)

  • fix(define): incorrect raw expression value type in build (#13003) (8f4cf07), closes #13003
  • fix(importAnalysisBuild): support parsing 'VITE_PRELOAD' (#13023) (447df7c), closes #13023
  • fix(server): should respect hmr port when middlewareMode=false (#13040) (1ee0014), closes #13040
  • fix(ssr): track for statements as block scope (#13021) (2f8502f), closes #13021
  • chore: add changelog for vite 4.2.2 and 3.2.6 (#13055) (0c9f1f4), closes #13055

4.3.3 (2023-04-26)

  • fix: address file path mismatch when loading Vite config file on Windows (fix #12923) (#13005) (84c4118), closes #12923 #13005
  • fix: undefined document in worker (#12988) (08c1452), closes #12988
  • fix(resolve): deep import resolvedId error (#13010) (30a41ff), closes #13010
  • feat: optimize deps option to turn off auto discovery (#13000) (bd86375), closes #13000
  • chore(deps): update all non-major dependencies (#12805) (5731ac9), closes #12805

4.3.2 (2023-04-25)

  • fix: status optional in windows network drive regex (fix: #12948) (#12949) (f781fc6), closes #12948 #12949
  • fix: use realpathSync for node <16.18 on windows (#12971) (965839c), closes #12971
  • fix(ssr): hoist statements after hashbang (#12985) (07bd6d1), closes #12985
  • chore: build time message setting color (#12940) (ada7cd5), closes #12940
  • chore: remove extra ) in changelog (#12932) (e7924d2), closes #12932
  • chore: upgrade rollup (#12965) (bdb2f25), closes #12965
  • refactor: resolveExports (#10917) (ad21ec3), closes #10917

4.3.1 (2023-04-20)

  • fix: revert ensure module in graph before transforming (#12774) (#12929) (9cc93a5), closes #12774 #12929
  • docs: 4.3 announcement and release notes (#12925) (f29c582), closes #12925
  • chore: clean up 4.3 changelog (55ec023)

4.3.0 (2023-04-20)

Vite 4.3 is out! Read the announcement blog post here

Vite 4.3, It's Fast

In this minor, we focused on improving the dev server performance. The resolve logic got streamlined, improving hot paths and implementing smarter caching for finding package.json, TS config files, and resolved URL in general.

You can read a detailed walkthrough of the performance work done in this blog post by one of Vite Contributors: How we made Vite 4.3 faaaaster 🚀.

This sprint resulted in speed improvements across the board compared to Vite 4.2.

These are the performance improvements as measured by sapphi-red/performance-compare, which tests an app with 1000 React Components cold and warm dev server startup time as well as HMR times for a root and a leaf component:

Vite (babel) Vite 4.2 Vite 4.3 Improvement
dev cold start 17249.0ms 5132.4ms -70.2%
dev warm start 6027.8ms 4536.1ms -24.7%
Root HMR 46.8ms 26.7ms -42.9%
Leaf HMR 27.0ms 12.9ms -52.2%
Vite (swc) Vite 4.2 Vite 4.3 Improvement
dev cold start 13552.5ms 3201.0ms -76.4%
dev warm start 4625.5ms 2834.4ms -38.7%
Root HMR 30.5ms 24.0ms -21.3%
Leaf HMR 16.9ms 10.0ms -40.8%

You can read more information about the benchmark here

Features

  • feat: expose isFileServingAllowed as public utility (#12894) (93e095c), closes #12894
  • feat: reuse existing style elements in dev (#12678) (3a41bd8), closes #12678
  • feat: skip pinging the server when the tab is not shown (#12698) (bedcd8f), closes #12698
  • feat(create-vite): use typescript 5.0 in templates (#12481) (8582e2d), closes #12481
  • feat: use preview server parameter in preview server hook (#11647) (4c142ea), closes #11647
  • feat(reporter): show gzip info for all compressible files (fix #11288) (#12485) (03502c8), closes #11288 #12485
  • feat(server): allow to import data: uris (#12645) (4886d9f), closes #12645
  • feat: add opus filetype to assets & mime types (#12526) (63524ba), closes #12526

Performance

  • perf: parallelize await exportsData from depsInfo (#12869) (ab3a530), closes #12869
  • perf: avoid side effects resolving in dev and in the optimizer/scanner (#12789) (fb904f9), closes #12789
  • perf: parallelize imports processing in import analysis plugin (#12754) (037a6c7), closes #12754
  • perf: unresolvedUrlToModule promise cache (#12725) (80c526e), closes #12725
  • perf(resolve): avoid tryFsResolve for /@fs/ paths (#12450) (3ef8aaa), closes #12450
  • perf(resolve): reduce vite client path checks (#12471) (c49af23), closes #12471
  • perf: avoid new URL() in hot path (#12654) (f4e2fdf), closes #12654
  • perf: improve isFileReadable performance (#12397) (acf3a14), closes #12397
  • perf: module graph url shortcuts (#12635) (c268cfa), closes #12635
  • perf: reduce runOptimizerIfIdleAfterMs time (#12614) (d026a65), closes #12614
  • perf: shorcircuit resolve in ensure entry from url (#12655) (82137d6), closes #12655
  • perf: skip es-module-lexer if have no dynamic imports (#12732) (5d07d7c), closes #12732
  • perf: start preprocessing static imports before updating module graph (#12723) (c90b46e), closes #12723
  • perf: use package cache for one off resolve (#12744) (77bf4ef), closes #12744
  • perf(css): cache lazy import (#12721) (fedb080), closes #12721
  • perf(hmr): keep track of already traversed modules when propagating update (#12658) (3b912fb), closes #12658
  • perf(moduleGraph): resolve dep urls in parallel (#12619) (4823fec), closes #12619
  • perf(resolve): skip for virtual files (#12638) (9e13f5f), closes #12638
  • perf: avoid fsp.unlink if we don't use the promise (#12589) (19d1980), closes #12589
  • perf: back to temporal optimizer dirs (#12622) (8da0422), closes #12622
  • perf: cache depsCacheDirPrefix value for isOptimizedDepFile (#12601) (edbd262), closes #12601
  • perf: improve cleanUrl util (#12573) (68d500e), closes #12573
  • perf: non-blocking write of optimized dep files (#12603) (2f5f968), closes #12603
  • perf: try using realpathSync.native in Windows (#12580) (1cc99f8), closes #12580
  • perf: use fsp in more cases (#12553) (e9b92f5), closes #12553
  • perf(html): apply preTransformRequest for html scripts (#12599) (420782c), closes #12599
  • perf(optimizer): bulk optimizer delay (#12609) (c881971), closes #12609
  • perf(optimizer): start optimizer early (#12593) (4f9b8b4), closes #12593
  • perf(resolve): avoid isWorkerRequest and clean up .ts imported a .js (#12571) (8ab1438), closes #12571
  • perf(resolve): findNearestMainPackageData instead of lookupFile (#12576) (54b376f), closes #12576
  • perf(server): only watch .env files in envDir (#12587) (26d8e72), closes #12587
  • perf: avoid execSync on openBrowser (#12510) (a2af2f0), closes #12510
  • perf: extract regex and use Map in data-uri plugin (#12500) (137e63d), closes #12500
  • perf: extract vite:resolve internal functions (#12522) (6ea4be2), closes #12522
  • perf: improve package cache usage (#12512) (abc2b9c), closes #12512
  • perf: more regex improvements (#12520) (abf536f), closes #12520
  • perf: regex to startsWith/slice in utils (#12532) (debc6e2), closes #12532
  • perf: remove regex in ImportMetaURL plugins (#12502) (1030049), closes #12502
  • perf: replace endsWith with === (#12539) (7eb52ec), closes #12539
  • perf: replace startsWith with === (#12531) (9cce026), closes #12531
  • perf: reuse regex in plugins (#12518) (da43936), closes #12518
  • perf: use safeRealpath in getRealpath (#12551) (cec2320), closes #12551
  • perf(css): improve postcss config resolve (#12484) (58e99b6), closes #12484
  • perf(esbuild): make tsconfck non-blocking (#12548) (e5cdff7), closes #12548
  • perf(esbuild): update tsconfck to consume faster find-all implementation (#12541) (b6ea25a), closes #12541
  • perf(resolve): fix browser mapping nearest package.json check (#12550) (eac376e), closes #12550
  • perf(resolve): improve package.json resolve speed (#12441) (1fc8c65), closes #12441
  • perf(resolve): refactor package.json handling for deep imports (#12461) (596b661), closes #12461
  • perf(resolve): refactor tryFsResolve and tryResolveFile (#12542) (3f70f47)
  • perf(resolve): skip absolute paths in root as url checks (#12476) (8d2931b), closes #12476
  • perf(resolve): support # in path only for dependencies (#12469) (6559fc7), closes #12469

Bug Fixes

  • fix(build): do not repeatedly output warning message (#12910) (251d0ab), closes #12910
  • fix: escape msg in render restricted error html (#12889) (3aa2127), closes #12889
  • fix: yarn pnp considerBuiltins (#12903) (a0e10d5), closes #12903
  • fix: broken middleware name (#12871) (32bef57), closes #12871
  • fix: cleanUpStaleCacheDirs once per process (#12847) (2c58b6e), closes #12847
  • fix(build): do not warn when URL in CSS is externalized (#12873) (1510996), closes #12873
  • fix: build time deps optimization, and ensure single crawl end call (#12851) (fa30879), closes #12851
  • fix: correct vite config temporary name (#12833) (cdd9c23), closes #12833
  • fix(importAnalysis): warning on ExportAllDeclaration (#12799) (5136b9b), closes #12799
  • fix(optimizer): start optimizer after buildStart (#12832) (cfe75ee), closes #12832
  • fix: handle try-catch for fs promise when resolve https config (#12808) (0bba402), closes #12808
  • fix(build): correctly handle warning ignore list (#12831) (8830532), closes #12831
  • fix(resolve): use different importer check for css imports (#12815) (d037327), closes #12815
  • fix: ignore sideEffects for scripts imported from html (#12786) (f09551f), closes #12786
  • fix: warn on build when bundling code that uses nodejs built in module (#12616) (72050f9), closes #12616
  • fix(cli): pass mode to optimize command (#12776) (da38ad8), closes #12776
  • fix(css): resolve at import from dependency basedir (#12796) (46bdf7d), closes #12796
  • fix(worker): asset in iife worker and relative base (#12697) (ddefc06), closes #12697
  • fix(worker): return null for shouldTransformCachedModule (#12797) (ea5f6fc), closes #12797
  • fix: allow onwarn to override vite default warning handling (#12757) (f736930), closes #12757
  • fix: ensure module in graph before transforming (#12774) (44ad321), closes #12774
  • fix: update package cache watcher (#12772) (a78588f), closes #12772
  • fix: avoid clean up while committing deps folder (#12722) (3f4d109), closes #12722
  • fix: ignore pnp resolve error (#12719) (2d30ae5), closes #12719
  • fix: leave fully dynamic import.meta.url asset (fixes #10306) (#10549) (56802b1), closes #10306 #10549
  • fix: output combined sourcemap in importAnalysisBuild plugin (#12642) (d051639), closes #12642
  • fix: take in relative assets path fixes from rollup (#12695) (81e44dd), closes #12695
  • fix: throws error when plugin tries to resolve ID to external URL (#11731) (49674b5), closes #11731
  • fix(css): css file emit synchronously (#12558) (8e30025), closes #12558
  • fix(import-analysis): escape quotes correctly (#12688) (1638ebd), closes #12688
  • fix(optimizer): load the correct lock file (#12700) (889eebe), closes #12700
  • fix(server): delay ws server listen when restart (#12734) (abe9274), closes #12734
  • fix(ssr): load sourcemaps alongside modules (#11780) (be95050), closes #11780
  • fix(ssr): show ssr module loader error stack (#12651) (050c0f9), closes #12651
  • fix(worker): disable manifest plugins in worker build (#12661) (20b8ef4), closes #12661
  • fix(worker): worker import.meta.url should not depends on document in iife mode (#12629) (65f5ed2), closes #12629
  • fix: avoid temporal optimize deps dirs (#12582) (ff92f2f), closes #12582
  • fix: await buildStart before server start (#12647) (871d353), closes #12647
  • fix: call buildStart only once when using next port (#12624) (e10c6bd), closes #12624
  • fix: sourcemapIgnoreList for optimizedDeps (#12633) (c1d3fc9), closes #12633
  • fix: splitFileAndPostfix works as cleanUrl (#12572) (276725f), closes #12572
  • fix: throw error on build optimizeDeps issue (#12560) (02a46d7), closes #12560
  • fix: use nearest pkg to resolved for moduleSideEffects (#12628) (1dfecc8), closes #12628
  • fix(css): use charset: 'utf8' by default for css (#12565) (c20a064), closes #12565
  • fix(html): dont pretransform public scripts (#12650) (4f0af3f), closes #12650
  • fix: avoid crash because of no access permission (#12552) (eea1682), closes #12552
  • fix: esbuild complains with extra fields (#12516) (7be0ba5), closes #12516
  • fix: escape replacements in clientInjections (#12486) (3765067), closes #12486
  • fix: open browser reuse logic (#12535) (04d14af), closes #12535
  • fix: prevent error on not set location href (#12494) (2fb8527), closes #12494
  • fix: simplify prettyUrl (#12488) (ebe5aa5), closes #12488
  • fix(config): add random number to temp transpiled file (#12150) (2b2ba61), closes #12150
  • fix(deps): update all non-major dependencies (#12389) (3e60b77), closes #12389
  • fix(html): public asset urls always being treated as paths (fix #11857) (#11870) (46d1352), closes #11857 #11870
  • fix(ssr): hoist import statements to the top (#12274) (33baff5), closes #12274
  • fix(ssr): hoist re-exports with imports (#12530) (45549e4), closes #12530
  • fix: should generate Hi-res sourcemap for dev (#12501) (1502617), closes #12501

Clean up

  • refactor: simplify crawlEndFinder (#12868) (31f8b51), closes #12868
  • refactor: use simpler resolve for nested optimized deps (#12770) (d202588), closes #12770
  • refactor: import.meta.url condition from renderChunk hook of worker plugin (#12696) (fdef8fd), closes #12696
  • refactor: clean up preTransformRequest (#12672) (561227c), closes #12672
  • refactor: make debugger nullable (#12687) (89e4977), closes #12687
  • refactor: remove ensureVolumeInPath (#12690) (a3150ee), closes #12690
  • refactor: remove unused exports data props (#12740) (4538bfe), closes #12740
  • refactor: use resolvePackageData in requireResolveFromRootWithFallback (#12712) (1ea38e2), closes #12712
  • refactor(css): simplify cached import code (#12730) (0646754), closes #12730
  • refactor: improve scanner logs (#12578) (9925a72), closes #12578
  • refactor: isInNodeModules util (#12588) (fb3245a), closes #12588
  • refactor: remove idToPkgMap (#12564) (a326ec8), closes #12564
  • refactor: simplify lookupFile (#12585) (4215e22), closes #12585
  • refactor: tryStatSync as util (#12575) (92601db), closes #12575
  • refactor: use findNearestPackageData in more places (#12577) (35faae9), closes #12577
  • refactor: esbuild plugin config logic (#12493) (45b5b0f), closes #12493

Previous Changelogs

4.3.0-beta.8 (2023-04-19)

See 4.3.0-beta.8 changelog

4.3.0-beta.7 (2023-04-17)

See 4.3.0-beta.7 changelog

4.3.0-beta.6 (2023-04-14)

See 4.3.0-beta.6 changelog

4.3.0-beta.5 (2023-04-11)

See 4.3.0-beta.5 changelog

4.3.0-beta.4 (2023-04-09)

See 4.3.0-beta.4 changelog

4.3.0-beta.3 (2023-04-07)

See 4.3.0-beta.3 changelog

4.3.0-beta.2 (2023-04-05)

See 4.3.0-beta.2 changelog

4.3.0-beta.1 (2023-03-29)

See 4.3.0-beta.1 changelog

4.3.0-beta.0 (2023-03-23)

See 4.3.0-beta.0 changelog

4.2.2 (2023-04-18)

  • fix: escape msg in render restricted error html, backport #12889 (8758c5c), closes #12889

4.2.1 (2023-03-20)

  • fix: add virtual: to virtual module source map ignore (#12444) (c4aa28f), closes #12444
  • fix(css): inject source content conditionally (#12449) (3e665f6), closes #12449
  • fix(worker): using data URLs for inline shared worker (#12014) (79a5007), closes #12014
  • chore: changelog edits for 4.2 (#12438) (ce047e3), closes #12438

4.2.0 (2023-03-16)

Vite 4.2 is out!

Support env variables replacement in HTML files

Vite now supports replacing env variables in HTML files. Any properties in import.meta.env can be used in HTML files with a special %ENV_NAME% syntax:

<h1>Vite is running in %MODE%</h1>
<p>Using data from %VITE_API_URL%</p>

Sourcemaps improvements

The Chrome Dev Tools team has been working to improve the DX of Vite and Vite-powered frameworks in the dev tools. Vite 4.2 brings an improved experience and tools for framework authors to hide 3rd party code and build artifacts from the user from console log traces using server.sourcemapIgnoreList and build.rollupOptions.output.sourcemapIgnoreList.

ESM subpath imports

Vite 4.2 now supports subpath imports, thanks to @lukeed05's resolve.exports library.

TypeScript 5 support

Vite 4.2 also supports TypeScript 5's tsconfig extends array format, thanks to tsconfck.

esbuild 0.17

esbuild v0.17.0 improved the design of its incremental, watch, and serve APIs. Check out #11908 for the rationale of why we didn't consider the backward-incompatible changes breaking for our use cases. The updated esbuild design now allows Vite to properly cancel in-fly builds and improve server restarts.

Use Rollup types from the vite package

Expose Rollup types as a namespace. This is helpful to avoid type conflicts because of different versions of Rollup types in environments like vite-ecosystem-ci (#12316).

import type { Rollup } from 'vite'

Português Docs Translation

The Vite documentation is now translated to Português at pt.vitejs.dev thanks to Nazaré Da Piedade .

Features

  • feat: add status message for 504 caused by optimizer (#12435) (5cdd3fa), closes #12435
  • feat: update tsconfck to 2.1.0 to add support for typescript 5 config syntax (#12401) (3f1c379), closes #12401
  • feat: default esbuild jsxDev based on config.isProduction (#12386) (f24c2b0), closes #12386
  • feat(css): add build.cssMinify (#12207) (90431f2), closes #12207
  • feat(types): export Rollup namespace (#12316) (6e49e52), closes #12316
  • feat: add sourcemapIgnoreList configuration option (#12174) (f875580), closes #12174
  • feat: cancellable scan during optimization (#12225) (1e1cd3b), closes #12225
  • feat: don't override build.target if terser is 5.16.0+ (#12197) (9885f6f), closes #12197
  • feat: support ESM subpath imports (#7770) (cc92da9), closes #7770
  • feat(css): add preprocessor option to define stylus vars & funcs (#7227) (5968bec), closes #7227
  • feat(css): support resolving stylesheets from exports map (#7817) (108aadf), closes #7817
  • feat(html): support env replacement (#12202) (4f2c49f), closes #12202
  • refactor: customize ErrorOverlay (part 2) (#11830) (4159e6f), closes #11830
  • refactor: remove constructed sheet type style injection (#11818) (1a6a0c2), closes #11818
  • refactor(importAnalysis): cache injected env string (#12154) (2aad552), closes #12154
  • feat: esbuild 0.17 (#11908) (9d42f06), closes #11908
  • feat: ignore list client injected sources (#12170) (8a98aef), closes #12170
  • feat: support rollup plugin this.load in plugin container context (#11469) (abfa804), closes #11469
  • feat(cli): allow to specify sourcemap mode via --sourcemap build's option (#11505) (ee3b90a), closes #11505
  • feat(reporter): report built time (#12100) (f2ad222), closes #12100

Bug Fixes

  • fix: html env replacement plugin position (#12404) (96f36a9), closes #12404
  • fix(optimizer): # symbol in deps id stripped by browser (#12415) (e23f690), closes #12415
  • fix(resolve): rebase sub imports relative path (#12373) (fe1d61a), closes #12373
  • fix(server): should close server after create new server (#12379) (d23605d), closes #12379
  • fix(resolve): remove deep import syntax handling (#12381) (42e0d6a), closes #12381
  • fix: print urls when dns order change (#12261) (e57cacf), closes #12261
  • fix: throw ssr import error directly (fix #12322) (#12324) (21ffc6a), closes #12322 #12324
  • fix(config): watch config even outside of root (#12321) (7e2fff7), closes #12321
  • fix(config): watch envDir even outside of root (#12349) (131f3ee), closes #12349
  • fix(define): correctly replace SSR in dev (#12204) (0f6de4d), closes #12204
  • fix(optimizer): suppress esbuild cancel error (#12358) (86a24e4), closes #12358
  • fix(optimizer): transform css require to import directly (#12343) (716286e), closes #12343
  • fix(reporter): build.assetsDir should not impact output when in lib mode (#12108) (b12f457), closes #12108
  • fix(types): avoid resolve.exports types for bundling (#12346) (6b40f03), closes #12346
  • fix(worker): force rollup to build worker module under watch mode (#11919) (d464679), closes #11919
  • fix: resolve browser mapping using bare imports (fix #11208) (#11219) (22de84f), closes #11208 #11219
  • fix: avoid null sourcePath in server.sourcemapIgnoreList (#12251) (209c3bd), closes #12251
  • fix: configure proxy before subscribing to error events (#12263) (c35e100), closes #12263
  • fix: enforce absolute path for server.sourcemapIgnoreList (#12309) (ab6ae07), closes #12309
  • fix: handle error without line and column in loc (#12312) (ce18eba), closes #12312
  • fix: properly clean up optimization temp folder (#12237) (fbbf8fe), closes #12237
  • fix: unique dep optimizer temp folders (#12252) (38ce81c), closes #12252
  • fix(build-import-analysis): should not append ?used when css request has ?url or ?raw (#11910) (e3f725f), closes #11910
  • fix(optimizer): don not call context.rebuild after cancel (#12264) (520d84e), closes #12264
  • fix(resolve): update resolve.exports to 2.0.1 to fix * resolution issue (#12314) (523d6f7), closes #12314
  • fix: use relative paths in sources for transformed source maps (#12079) (bcbc582), closes #12079
  • fix(cli): after setting server.open, the default open is inconsistent… (#11974) (33a38db), closes #11974
  • fix(client-inject): replace globalThis.process.env.NODE_ENV (fix #12185) (#12194) (2063648), closes #12185 #12194
  • fix(css): should not rebase http url for less (fix: #12155) (#12195) (9cca30d), closes #12155 #12195
  • fix(deps): update all non-major dependencies (#12036) (48150f2), closes #12036
  • fix(import-analysis): improve error for jsx to not be preserve in tsconfig (#12018) (91fac1c), closes #12018
  • fix(optimizer): log esbuild error when scanning deps (#11977) (20e6060), closes #11977
  • fix(optimizer): log unoptimizable entries (#12138) (2c93e0b), closes #12138
  • fix(server): watch env files creating and deleting (fix #12127) (#12129) (cc3724f), closes #12127 #12129
  • build: correct d.ts output dir in development (#12212) (b90bc1f), closes #12212

Previous Changelogs

4.2.0-beta.2 (2023-03-13)

See 4.2.0-beta.2 changelog

4.2.0-beta.1 (2023-03-07)

See 4.2.0-beta.1 changelog

4.2.0-beta.0 (2023-02-27)

See 4.2.0-beta.0 changelog

4.1.4 (2023-02-21)

  • fix(define): should not stringify vite internal env (#12120) (73c3999), closes #12120
  • docs: update rollup docs links (#12130) (439a73f), closes #12130

4.1.3 (2023-02-20)

  • fix: catch and handle websocket error (#11991) (#12007) (4b5cc9f), closes #11991 #12007
  • fix: do not append version query param when scanning for dependencies (#11961) (575bcf6), closes #11961
  • fix(css): handle pure css chunk heuristic with special queries (#12091) (a873af5), closes #12091
  • fix(esbuild): umd helper insert into wrong position in lib mode (#11988) (86bc243), closes #11988
  • fix(html): respect disable modulepreload (#12111) (6c50119), closes #12111
  • fix(html): rewrite assets url in <noscript> (#11764) (1dba285), closes #11764
  • feat(preview): improve error when build output missing (#12096) (a0702a1), closes #12096
  • feat(ssr): add importer path to error msg when invalid url import occur (#11606) (70729c0), closes #11606

4.1.2 (2023-02-17)

  • fix: correct access to crossOrigin attribute (#12023) (6a0d356), closes #12023
  • fix: narrow defineConfig return type (#12021) (18fa8f0), closes #12021
  • fix(define): inconsistent env values in build mode (#12058) (0a50c59), closes #12058
  • fix(env): compatible with env variables ended with unescaped $ (#12031) (05b3df0), closes #12031
  • fix(ssr): print file url in ssrTransform parse error (#12060) (19f39f7), closes #12060
  • revert: narrow defineConfig return type (#12077) (54d511e), closes #12077
  • feat: support import.meta.hot?.accept (#12053) (081c27f), closes #12053
  • chore: add jsdoc default value (#11746) (8c87af7), closes #11746
  • chore: fix typos (#12032) (ee1a686), closes #12032
  • chore(deps): update dependency strip-literal to v1 (#12044) (5bd6c0a), closes #12044
  • chore(pluginContainer): simplify error position judge condition (#12003) (e3ef9f4), closes #12003

4.1.1 (2023-02-02)

4.1.0 (2023-02-02)

Vite 4.1 updates to the latest versions of Rollup and esbuild. Check out the new Rollup docs, that are now powered by VitePress making the navigation between Vite and Rollup docs easier for users.

Vite docs got a theme update migrating to the latest version of VitePress.

As part of Vite 4, the Vue and React plugins have been extracted out of the monorepo. Although their release cycle will no longer follow Vite releases moving forward, Vite 4.1 is released in parallel with new versions of @vitejs/plugin-react and @vitejs/plugin-react-swc. @vitejs/plugin-react 3.1.0 reworks the way HMR is handled fixing many edge cases and @vitejs/plugin-react-swc 3.1.0 adds support for SWC plugins.

There is also a new major for @vitejs/plugin-legacy, see changelog for v4.0.0. This version contains breaking changes:

Features

  • feat: add experimental option to skip SSR transform (#11411) (e781ef3), closes #11411
  • feat: reproducible manifest (#11542) (efc8979), closes #11542
  • feat: support BROWSER and BROWSER_ARGS in env file (#11513) (8972868), closes #11513
  • feat(cli): clear console by pressing c (#11493) (#11494) (1ae018f), closes #11493 #11494
  • perf(build): disable rollup cache for builds (#11454) (580ba7a), closes #11454
  • perf(resolve): improve file existence check (#11436) (4a12b89), closes #11436

Bug Fixes

  • fix: await bundle closing (#11873) (1e6768d), closes #11873
  • fix: make viteMetadata property of RenderedChunk optional (#11768) (128f09e), closes #11768
  • fix: replace import.meta.hot with undefined in the production (#11317) (73afe6d), closes #11317
  • fix: update CJS interop error message (#11842) (356ddfe), closes #11842
  • fix(client): serve client sources next to deployed scripts (#11865) (63bd261), closes #11865
  • fix(deps): update all non-major dependencies (#11846) (5d55083), closes #11846
  • fix(esbuild): avoid polluting global namespace while minify is false (#11882) (c895379), closes #11882
  • fix: deep resolve side effects when glob does not contain / (#11807) (f3a0c3b), closes #11807
  • fix: duplicated sourceMappingURL for worker bundles (fix #11601) (#11602) (5444781), closes #11601 #11602
  • fix: emit assets from SSR build (#11430) (ffbdcdb), closes #11430
  • fix: revert "load sourcemaps alongside modules (#11576)" (#11775) (697dd00), closes #11576 #11775
  • fix: scope tracking for shadowing variables in blocks (#11806) (#11811) (568bdab), closes #11806 #11811
  • fix(cli): exit 1 on ctrl+c (#11563) (fb77411), closes #11563
  • fix(css): insert styles in the same position (#11763) (d2f1381), closes #11763
  • fix(esbuild): check server before reload tsconfig (#11747) (c56b954), closes #11747
  • fix(hmr): hmr websocket failure for custom middleware mode with server.hmr.server (#11487) (00919bb), closes #11487
  • fix(ssr): load sourcemaps alongside modules (fix: #3288) (#11576) (dc05e97), closes #3288 #11576
  • refactor: upgrade resolve.exports (#11712) (00a79ec), closes #11712
  • fix: remove moment from force interop packages (#11502) (b89ddd6), closes #11502
  • fix(css): fix stale css when reloading with hmr disabled (#10270) (#11506) (e5807c4), closes #10270 #11506
  • fix(hmr): base default protocol on client source location (#11497) (167753d), closes #11497
  • fix(metadata): expose viteMetadata type (#11511) (32dee3c), closes #11511
  • fix(resolve): ensure exports has precedence over mainFields (cherry pick #11234) (#11595) (691e432), closes #11234 #11595
  • fix(resolve): use only root package.json as exports source (#11259) (b9afa6e), closes #11259
  • refactor(build): close rollup bundle directly (#11460) (a802828), closes #11460

Previous Changelogs

4.1.0-beta.2 (2023-02-01)

See 4.1.0-beta.2 changelog

4.1.0-beta.1 (2023-01-26)

See 4.1.0-beta.1 changelog

4.1.0-beta.0 (2023-01-09)

See 4.1.0-beta.0 changelog

4.0.4 (2023-01-03)

  • fix: importmap should insert before module preload link (#11492) (25c64d7), closes #11492
  • fix: server.host with ipv6 missed [] (fix #11466) (#11509) (2c38bae), closes #11466 #11509
  • fix: stop considering parent URLs as public file (#11145) (568a014), closes #11145
  • fix(build): invalidate chunk hash when css changed (#11475) (7a97a04), closes #11475
  • fix(cli): ctrl+C no longer kills processes (#11434) (#11518) (718fc1d), closes #11434 #11518
  • fix(cli): revert ctrl+C no longer kills processes (#11434) (#11518) (#11562) (3748acb), closes #11434 #11518 #11562
  • fix(optimizer): check .vite/deps directory existence before removing (#11499) (1b043f9), closes #11499
  • fix(ssr): emit js sourcemaps for ssr builds (#11343) (f12a1ab), closes #11343
  • chore: update license (#11476) (3d346c0), closes #11476
  • chore(deps): update dependency @rollup/plugin-json to v6 (#11553) (3647d07), closes #11553

4.0.3 (2022-12-21)

  • chore(deps): update dependency @rollup/plugin-commonjs to v24 (#11420) (241db16), closes #11420
  • chore(typo): fix typo (#11445) (ed80ea5), closes #11445
  • fix(ssr): ignore module exports condition (#11409) (d3c9c0b), closes #11409
  • feat: allow import.meta.hot define override (#8944) (857d578), closes #8944

4.0.2 (2022-12-18)

  • fix: fix the error message in the toOutputFilePathWithoutRuntime function (#11367) (8820f75), closes #11367
  • fix: make vite optimize prebundle for dev (#11387) (b4ced0f), closes #11387
  • fix: revert #11290 (#11412) (6587d2f), closes #11290 #11412
  • fix: server and preview open fails to add slash before relative path (#11394) (57276b7), closes #11394
  • fix: skip applescript when no Chromium browser found (fixes #11205) (#11406) (274d1f3), closes #11205 #11406
  • fix(deps): update dependency ufo to v1 (#11372) (4288300), closes #11372
  • chore: typecheck create-vite (#11295) (af86e5b), closes #11295
  • chore(deps): update dependency convert-source-map to v2 (#10548) (8dc6528), closes #10548
  • chore(deps): update dependency mlly to v1 (#11370) (9662d4d), closes #11370

4.0.1 (2022-12-12)

  • feat: show server url by pressing u (#11319) (8c0bb7b), closes #11319
  • feat(html): clickable error position for html parse error (#11334) (2e15f3d), closes #11334
  • fix: ?inline warning for .css.js file (#11347) (729fb1a), closes #11347
  • fix: check if build exists so preview doesn't show 404s due to nonexistent build (#10564) (0a1db8c), closes #10564
  • fix: derive useDefineForClassFields value from tsconfig.compilerOptions.target (fixes #10296) (# (42976d8), closes #10296 #11301
  • fix: preview fallback (#11312) (cfedf9c), closes #11312
  • fix: respect base when using /__open-in-editor (#11337) (8856c2e), closes #11337
  • fix: wrongly resolve to optimized doppelganger (#11290) (34fec41), closes #11290
  • fix(env): test NODE_ENV override before expand (#11309) (d0a9281), closes #11309
  • fix(preview): Revert #10564 - throw Error on missing outDir (#11335) (3aaa0ea), closes #10564 #11335 #10564
  • docs: fix banner image in CHANGELOG.md (#11336) (45b66f4), closes #11336
  • chore: enable @typescript-eslint/ban-ts-comment (#11326) (e58a4f0), closes #11326
  • chore: fix format (#11311) (9c2b1c0), closes #11311
  • chore: update changelog release notes for 4.0 (#11285) (83abd37), closes #11285
  • chore(deps): update all non-major dependencies (#11321) (dcc0004), closes #11321
  • chore(esbuild): add test for configuration overrides (#11267) (f897b64), closes #11267

4.0.0 (2022-12-09)

Vite 4 Announcement Cover Image

Read the announcement blog post: Announcing Vite 4

Quick links:

Docs in other languages:

Main Changes

This major is smaller in scope compared to Vite 3, with the main objective of upgrading to Rollup 3. We've worked with the ecosystem to ensure a smooth upgrade path for this new major.

Rollup 3

Vite is now using Rollup 3, which allowed us to simplify Vite's internal asset handling and has many improvements. See the Rollup 3 release notes here.

Framework Plugins out of the Vite core monorepo

@vitejs/plugin-vue and @vitejs/plugin-react have been part of Vite core monorepo since the first versions of Vite. This helped us to get a close feedback loop when making changes as we were getting both Core and the plugins tested and released together. With vite-ecosystem-ci we can get this feedback with these plugins developed on independent repositories, so from Vite 4, they have been moved out of the Vite core monorepo. This is meaningful for Vite's framework-agnostic story, and will allow us to build independent teams to maintain each of the plugins. If you have bugs to report or features to request, please create issues on the new repositories moving forward: vitejs/vite-plugin-vue and vitejs/vite-plugin-react.

New React plugin using SWC during development

SWC is now a mature replacement for Babel, especially in the context of React projects. SWC's React Fast Refresh implementation is a lot faster than Babel, and for some projects, it is now a better alternative. From Vite 4, two plugins are available for React projects with different tradeoffs. We believe that both approaches are worth supporting at this point, and we'll continue to explore improvements to both plugins in the future.

@vitejs/plugin-react

@vitejs/plugin-react is a plugin that uses esbuild and Babel, achieving fast HMR with a small package footprint and the flexibility of being able to use the babel transform pipeline.

@vitejs/plugin-react-swc (new)

@vitejs/plugin-react-swc is a new plugin that uses esbuild during build, but replaces Babel with SWC during development. For big projects that don't require non-standard React extensions, cold start and Hot Module Replacement (HMR) can be significantly faster.

Compatibility

The modern browser build now targets safari14 by default for wider ES2020 compatibility (#9063). This means that modern builds can now use BigInt and that the nullish coallessing operator isn't transpiled anymore. If you need to support older browsers, you can add @vitejs/plugin-legacy as usual.

Importing CSS as a string

In Vite 3, importing the default export of a .css file could introduce a double loading of CSS.

import cssString from './global.css';

This double loading could occur since a .css file will be emitted and it's likely that the CSS string will also be used by the application code — for example, injected by the framework runtime. From Vite 4, the .css default export has been deprecated. The ?inline query suffix modifier needs to be used in this case, as that doesn't emit the imported .css styles.

import stuff from './global.css?inline'

Other features

  • Support for patch-package when pre bundling dependencies (#10286)
  • Cleaner build logs output (#10895) and switch to kB to align with browser dev tools (#10982)
  • Improved error messages during SSR (#11156)

Features

  • feat: add CLI keyboard shortcuts (#11228) (87973f1), closes #11228
  • feat: export error message generator (#11155) (493ba1e), closes #11155
  • feat(node/plugins): esbuild options (#11049) (735b98b), closes #11049
  • feat: improve the error message of expand (#11141) (825c793), closes #11141
  • feat: update @types/node to v18 (#11195) (4ec9f53), closes #11195
  • feat(client)!: remove never implemented hot.decline (#11036) (e257e3b), closes #11036
  • feat!: support safari14 by default for wider ES2020 compatibility (#9063) (3cc65d7), closes #9063
  • feat!: support multiline values in env files (#10826) (606e60d), closes #10826
  • feat(ssr)!: remove dedupe and mode support for CJS (#11101) (3090564), closes #11101
  • feat: align object interface for transformIndexHtml hook (#9669) (1db52bf), closes #9669
  • feat(build): cleaner logs output (#10895) (7d24b5f), closes #10895
  • feat(css): deprecate css default export (#11094) (01dee1b), closes #11094
  • feat(optimizer): support patch-package (#10286) (4fb7ad0), closes #10286
  • feat(build): Use kB in build reporter (#10982) (b57acfa), closes #10982
  • feat(css): upgrade postcss-modules (#10987) (892916d), closes #10987
  • feat(hmr): invalidate message (#10946) (0d73473), closes #10946
  • feat(client): expose hot.prune API (#11016) (f40c18d), closes #11016
  • feat(hmr): deduplicate paths and join them with commas (#10891) (967299a), closes #10891
  • feat: base without trailing slash (#10723) (8f87282), closes #10723
  • feat: handle static assets in case-sensitive manner (#10475) (c1368c3), closes #10475
  • feat(cli): build --profile (#10719) (9c808cd), closes #10719
  • feat(env): support dotenv-expand to contains process env (#10370) (d5fe92c), closes #10370
  • feat!: set esbuild default charset to utf8 (#10753) (4caf4b6), closes #10753
  • feat: rollup 3 (#9870) (beb7166), closes #9870

Bug Fixes

  • fix: add \0 to virtual files id (#11261) (02cdfa9), closes #11261
  • fix: skip shortcuts on non-tty stdin (#11263) (9602686), closes #11263
  • fix(ssr): skip rewriting stack trace if it's already rewritten (fixes #11037) (#11070) (feb8ce0), closes #11037 #11070
  • refactor(optimizer): await depsOptimizer.scanProcessing (#11251) (fa64c8e), closes #11251
  • fix: improve CLI shortcuts help display (#11247) (bb235b2), closes #11247
  • fix: less promises for scanning and await with allSettled (#11245) (45b170e), closes #11245
  • fix(optimizer): escape entrypoints when running scanner (#11250) (b61894e), closes #11250
  • fix: await scanner (#11242) (52a6732), closes #11242
  • fix(css): fix css lang regex (#11237) (a55d0b3), closes #11237
  • fix: don't print urls on restart with default port (#11230) (5aaecb6), closes #11230
  • fix: serialize bundleWorkerEntry (#11218) (306bed0), closes #11218
  • fix(config): resolve dynamic import as esm (#11220) (f8c1ed0), closes #11220
  • fix(env): prevent env expand on process.env (#11213) (d4a1e2b), closes #11213
  • fix: add type for function localsConvention value (#11152) (c9274b4), closes #11152
  • fix: cacheDir should be ignored from watch (#10242) (75dbca2), closes #10242
  • fix: don't check .yarn/patches for computing dependencies hash (#11168) (65bcccf), closes #11168
  • fix: formatError() outside rollup context (#11156) (2aee2eb), closes #11156
  • fix: Revert "fix: missing js sourcemaps with rewritten imports broke debugging (#7767) (#9476)" (#11 (fdc6f3a), closes #7767 #9476 #11144
  • fix: Dev SSR dep optimization + respect optimizeDeps.include (#11123) (515caa5), closes #11123
  • fix: export preprocessCSS in CJS (#11067) (793255d), closes #11067
  • fix: glob import parsing (#10949) (#11056) (ac2cfd6), closes #10949 #11056
  • fix: import.meta.env and process.env undefined variable replacement (fix #8663) (#10958) (3e0cd3d), closes #8663 #10958
  • fix: missing js sourcemaps with rewritten imports broke debugging (#7767) (#9476) (3fa96f6), closes #7767 #9476
  • fix: preserve default export from externalized packages (fixes #10258) (#10406) (88b001b), closes #10258 #10406
  • fix: reset global regex before match (#11132) (db8df14), closes #11132
  • fix(css): handle environment with browser globals (#11079) (e92d025), closes #11079
  • fix(deps): update all non-major dependencies (#11091) (073a4bf), closes #11091
  • fix(esbuild): handle inline sourcemap option (#11120) (4c85c0a), closes #11120
  • fix(importGlob): don't warn when CSS default import is not used (#11121) (97f8b4d), closes #11121
  • fix(importGlob): preserve line count for sourcemap (#11122) (14980a1), closes #11122
  • fix(importGlob): warn on default import css (#11103) (fc0d9e3), closes #11103
  • fix(plugin-vue): support scss/sass/less... hmr on custom template languages (fix #10677) (#10844) (d413848), closes #10677 #10844
  • fix(ssr): preserve require for external node (#11057) (1ec0176), closes #11057
  • fix(worker): disable build reporter plugin when bundling worker (#11058) (7b72069), closes #11058
  • fix!: make NODE_ENV more predictable (#10996) (8148af7), closes #10996
  • fix(config)!: support development build (#11045) (8b3d656), closes #11045
  • refactor: use function to eval worker and glob options (#10999) (f4c1264), closes #10999
  • refactor(client): simplify fetchUpdate code (#11004) (f777b55), closes #11004
  • fix(html): transform relative path with long base in /index.html (#10990) (752740c), closes #10990
  • fix(mpa): support mpa fallback (#10985) (61165f0), closes #10985
  • feat: align default chunk and asset file names with rollup (#10927) (cc2adb3), closes #10927
  • fix: make addWatchFile() work (fix #7024) (#9723) (34db08b), closes #7024 #9723
  • fix(config): exclude config.assetsInclude empty array (#10941) (18c71dc), closes #10941
  • fix(ssr): skip optional peer dep resolve (#10593) (0a69985), closes #10593
  • perf: regexp perf issues, refactor regexp stylistic issues (#10905) (fc007df), closes #10905
  • refactor: move CSS emitFile logic closer to rollup (#10909) (92a206b), closes #10909
  • refactor: use rollup hashing when emitting assets (#10878) (78c77be), closes #10878
  • fix: don't throw on malformed URLs (#10901) (feb9b10), closes #10901
  • fix: gracefully handle forbidden filesystem access (#10793) (92637a2), closes #10793
  • fix(types): remove null from CSSModulesOptions.localsConvention (#10904) (a9978dd), closes #10904
  • refactor(types)!: remove facade type files (#10903) (a309058), closes #10903
  • fix: inconsistent handling of non-ASCII base in resolveConfig and dev server (#10247) (16e4123), closes #10247
  • fix: prevent cache on optional package resolve (#10812) (c599a2e), closes #10812
  • fix: relocated logger to respect config. (#10787) (52e64eb), closes #10787
  • fix: throw missing name error only when 'umd' or 'iife' are used (#9886) (b8aa825), closes #9886
  • fix(deps): update all non-major dependencies (#10804) (f686afa), closes #10804
  • fix(ssr): improve missing file error (#10880) (5451a34), closes #10880

Previous Changelogs

4.0.0-beta.7 (2022-12-08)

See 4.0.0-beta.7 changelog

4.0.0-beta.6 (2022-12-08)

See 4.0.0-beta.6 changelog

4.0.0-beta.5 (2022-12-08)

See 4.0.0-beta.5 changelog

4.0.0-beta.4 (2022-12-07)

See 4.0.0-beta.4 changelog

4.0.0-beta.3 (2022-12-07)

See 4.0.0-beta.3 changelog

4.0.0-beta.2 (2022-12-07)

See 4.0.0-beta.2 changelog

4.0.0-beta.1 (2022-12-06)

See 4.0.0-beta.1 changelog

4.0.0-beta.0 (2022-12-05)

See 4.0.0-beta.0 changelog

4.0.0-alpha.6 (2022-11-30)

See 4.0.0-alpha.6 changelog

4.0.0-alpha.5 (2022-11-22)

See 4.0.0-alpha.5 changelog

4.0.0-alpha.4 (2022-11-17)

See 4.0.0-alpha.4 changelog

4.0.0-alpha.3 (2022-11-15)

See 4.0.0-alpha.3 changelog

4.0.0-alpha.2 (2022-11-13)

See 4.0.0-alpha.2 changelog

4.0.0-alpha.1 (2022-11-12)

See 4.0.0-alpha.1 changelog

4.0.0-alpha.0 (2022-11-07)

See 4.0.0-alpha.0 changelog

3.2.6 (2023-04-18)

  • fix: escape msg in render restricted error html, backport (#12889) (#12892) (b48ac2a), closes #12889 #12892

3.2.5 (2022-12-05)

3.2.4 (2022-11-15)

3.2.3 (2022-11-07)

  • refactor: change style.innerHTML to style.textContent (#10801) (8ea71b4), closes #10801
  • fix: add @types/node as an optional peer dependency (#10757) (57916a4), closes #10757
  • fix: transform import.meta.glob when scan JS/TS #10634 (#10635) (c53ffec), closes #10634 #10635
  • fix(css): url() with variable in sass/less (fixes #3644, #7651) (#10741) (fa2e47f), closes #3644 #7651 #10741
  • feat: add vite:afterUpdate event (#9810) (1f57f84), closes #9810
  • perf: improve multilineCommentsRE regex (fix #10689) (#10751) (51ed059), closes #10689 #10751
  • perf: Use only one ps exec to find a Chromium browser opened on Mac OS (#10588) (f199e90), closes #10588
  • chore: fix dev build replacing undefined (#10740) (1358a3c), closes #10740
  • chore: remove non used type definitions (#10738) (ee8c7a6), closes #10738
  • chore(deps): update dependency @rollup/plugin-commonjs to v23 (#10611) (cc4be70), closes #10611
  • chore(deps): update dependency @rollup/plugin-dynamic-import-vars to v2 (#10726) (326f782), closes #10726

3.2.2 (2022-10-31)

  • chore: remove src/client from package (#10703) (816842e), closes #10703
  • chore(deps): update all non-major dependencies (#10725) (22cfad8), closes #10725
  • fix: remove loaded input sourcemap (fixes #8411) (#10705) (eb50e3a), closes #8411 #10705
  • fix: tsconfig jsx overrides esbuild options, reverts #10374 (#10714) (aacf6a4), closes #10374 #10714
  • docs(changelog): fix broken url (#10692) (f937ccc), closes #10692

3.2.1 (2022-10-28)

  • fix: prioritize existing env over .env (fixes #10676) (#10684) (e2ea6af), closes #10676 #10684
  • fix: remove picomatch type import (fixes #10656) (#10678) (1128b4d), closes #10656 #10678
  • fix(config): resolve externalized specifier with internal resolver (#10683) (b15d21c)
  • feat: Add support for imba in html scripts (#10679) (b823fd6), closes #10679
  • chore: join URL segments more safely (#10590) (675bf07), closes #10590
  • chore: update changelog for 3.2 (#10646) (f787a60), closes #10646

3.2.0 (2022-10-26)

Main Changes

Multiple Entries for Library Mode

Library mode now supports multiple entries:

  lib: {
    entry: {
        primary: 'src/index.ts',
        secondary: 'src/secondary.ts'
    },
    formats: ['es', 'cjs']
  }
  // => primary.es.js, primary.cjs.js, secondary.es.js, secondary.cjs.js

Check out the PR #7047, and the build.lib config docs

build.modulePreload options

Vite now allows filtering and modifying module preload dependencies for each entry and async chunk. experimental.renderBuiltUrl will also get called for preload asset paths. And build.modulePreload.resolveDependencies will be called both for JS dynamic imports preload lists and also for HTML preload lists for chunks imported from entry HTML files. Refer to the PR for more context #9938 and check out the modulePreload config docs. Note: build.modulePreloadPolyfill is now deprecated, please migrate to build.modulePreload.polyfill.

Include Duplicate Assets in the Manifest

Laravel and other backends integrations will now get entries for every asset file, even if they have been de-duplicated. See #9928 for more information.

Customizable ErrorOverlay

You can now customize the ErrorOverlay by using css parts. Check out the PR for more details: #10234.

Features

  • feat(build): experimental copyPublicDir option (#10550) (4f4a39f), closes #10550
  • feat(css): export preprocessCSS API (#10429) (177b427), closes #10429
  • feat(preview): support outDir option (#10418) (15b90b3), closes #10418
  • feat: include line and column in error format (#10529) (d806c4a), closes #10529
  • feat: reuse opening tab in chromium browsers when start dev server (#10485) (1a2e7a8), closes #10485
  • feat: update esbuild compilation affecting fields (#10374) (f542727), closes #10374
  • feat(proxy): Include URL of request in proxy errors (#10508) (27e2832), closes #10508
  • refactor: delete dependent pre built proxy modules (#10427) (b3b388d), closes #10427
  • feat(server): invalidate module with hmr (#10333) (8328011), closes #10333
  • feat: build.modulePreload options (#9938) (e223f84), closes #9938
  • feat: customize ErrorOverlay (#10234) (fe4dc8d), closes #10234
  • feat: dynamic import support ?url and ?worker (#8261) (0cb01ca), closes #8261
  • feat: include duplicate assets in the manifest (#9928) (42ecf37), closes #9928
  • feat: support import.meta.hot.invalidate (#10244) (fb8ab16), closes #10244
  • feat: support postcss sugarss (#6705) (8ede2f1), closes #6705
  • feat(assets): allow new URL to resolve package assets (#7837) (bafccf5), closes #7837
  • feat(client): add data-vite-dev-id attribute to style elements (#10080) (ea09fde), closes #10080
  • feat(lib): allow multiple entries (#7047) (65a0fad), closes #7047
  • feat(optimizer): Support bun lockfile format (#10288) (931d69b), closes #10288
  • refactor(types): bundle client types (#9966) (da632bf), closes #9966
  • refactor(types): simplify type exports (#10243) (291174d), closes #10243
  • perf: cache compiled glob for server.fs.deny (#10044) (df560b0), closes #10044

Bug Fixes

  • fix: add a warning if css urls not exist during build time (fix #9800) (#10331) (9f268da), closes #9800 #10331
  • fix: increase error overlay z-index (#10603) (1157941), closes #10603
  • fix: revert es-module-lexer version (#10614) (cffe5c9), closes #10614
  • fix: when the file path is an absolute path, parsing causes parameter loss (#10449) (df86990), closes #10449
  • fix(config): resolve build options with fallback (#10645) (f7021e3), closes #10645
  • fix(deps): update all non-major dependencies (#10610) (bb95467), closes #10610
  • fix(hmr): cannot reload after missing import on server startup (#9534) (#10602) (ee7c28a), closes #9534 #10602
  • fix(css): strip BOM (fixes #10043) (#10577) (e0463bd), closes #10043 #10577
  • fix(ssr): resolve with isRequire true (#10569) (7b81210), closes #10569
  • fix: prefer exports when resolving (#10371) (3259006), closes #10371
  • fix(config): partial deno support (#10446) (c4489ea), closes #10446
  • fix(config): skip resolve builtin modules (#10420) (ecba3f8), closes #10420
  • fix(ssr): handle parallel hookNodeResolve (#10401) (1a961d9), closes #10401
  • fix(cli): when the user enters the same command (#10474) (2326f4a), closes #10474
  • fix(config): don't use module condition (import.meta.resolve) (fixes #10430) (#10528) (64f19b9), closes #10430 #10528
  • fix(css): remove ?direct in id for postcss process (#10514) (67e7bf2), closes #10514
  • fix(html): allow self closing on non-void elements (#10478) (29292af), closes #10478
  • fix(legacy): restore entry chunk CSS inlining, reverts #9761 (#10496) (9cc808e), closes #9761 #10496
  • chore: simplify filter plugin code (#10459) (5d9b810), closes #10459
  • chore(deps): update all non-major dependencies (#10488) (15aa827), closes #10488
  • chore: update magic-string (#10364) (23c9259), closes #10364
  • chore(deps): update all non-major dependencies (#10393) (f519423), closes #10393
  • chore(deps): update dependency @rollup/plugin-alias to v4 (#10394) (e2b4c8f), closes #10394
  • feat(lib): cjs instead of umd as default format for multiple entries (#10315) (07d3fbd), closes #10315
  • fix: make client type work with moduleResolution=node16 (#10375) (8c4df1f), closes #10375
  • fix(config): don't resolve by module field (#10347) (cc1c829), closes #10347
  • fix(html): handle attrs with prefix (fixes #10337) (#10381) (7b4d6e8), closes #10337 #10381
  • fix(ssr): track var as function scope (#10388) (87b48f9), closes #10388
  • fix: add module types (#10299) (0b89dd2), closes #10299
  • fix: css order problem in async chunk (#9949) (6c7b834), closes #9949
  • fix: don't duplicate styles with dynamic import (fix #9967) (#9970) (65f97bd), closes #9967 #9970
  • fix: env variables override (#10113) (d619460), closes #10113
  • fix: isFromTsImporter flag in worker virtual model (#10273) (78f74c9), closes #10273
  • fix: properly close optimizer on server restart (#10028) (a32777f), closes #10028
  • fix: respect mainFields when resolving browser/module field (fixes #8659) (#10071) (533d13c), closes #8659 #10071
  • fix: respect resolve.conditions, when resolving browser/require field (#9860) (9a83eaf), closes #9860
  • fix: support process each out dir when there are two or more (#9748) (ee3231c), closes #9748
  • fix(build): fix resolution algorithm when build.ssr is true (#9989) (7229251), closes #9989
  • fix(config): resolve implicit deps as absolute path (#10254) (ec1f3ae), closes #10254
  • fix(css): missing css in lib mode (#10185) (e4c1c6d), closes #10185
  • fix(deps): update all non-major dependencies (#10160) (6233c83), closes #10160
  • fix(deps): update all non-major dependencies (#10316) (a38b450), closes #10316
  • fix(deps): update rollup to ^2.79.1 (#10298) (2266d83), closes #10298
  • fix(esbuild): transpile with esnext in dev (#10207) (43b7b78), closes #10207
  • fix(hmr): handle virtual module update (#10324) (7c4accb), closes #10324
  • fix(optimizer): browser field bare import (fix #7599) (#10314) (cba13e8), closes #7599 #10314
  • fix(sass): reorder sass importers (#10101) (a543731), closes #10101
  • fix(server): handle appType mpa html fallback (#10336) (65dd88b), closes #10336
  • fix(ssr): correctly track scope (#10300) (a60529f), closes #10300
  • fix(worker): support comment in worker constructor option (#10226) (66c9058), closes #10226
  • fix(worker): support trailing comma (#10211) (0542e7c), closes #10211

Previous Changelogs

3.2.0-beta.4 (2022-10-24)

See 3.2.0-beta.4 changelog

3.2.0-beta.3 (2022-10-20)

See 3.2.0-beta.3 changelog

3.2.0-beta.2 (2022-10-14)

See 3.2.0-beta.2 changelog

3.2.0-beta.1 (2022-10-10)

See 3.2.0-beta.1 changelog

3.2.0-beta.0 (2022-10-05)

See 3.2.0-beta.0 changelog

3.1.3 (2022-09-19)

  • fix: esbuildOutputFromId for symlinked root (#10154) (fc5310f), closes #10154
  • fix(hmr): dedupe virtual modules in module graph (#10144) (71f08e7), closes #10144
  • fix(lib): respect rollupOptions.input in lib mode (#10116) (c948e7d), closes #10116

3.1.2 (2022-09-17)

  • fix: use isOptimizable to ensure version query (#10141) (23a51c6), closes #10141

3.1.1 (2022-09-15)

  • fix: ensure version query for relative node_modules imports (#10016) (1b822d0), closes #10016
  • fix: no quote on attrs (#10117) (f541239), closes #10117
  • fix: prevent error overlay style being overridden (fixes #9969) (#9971) (a7706d0), closes #9969 #9971
  • fix: proxy to secured websocket server (#10045) (9de9bc4), closes #10045
  • fix: replace white with reset (#10104) (5d56e42), closes #10104
  • fix(deps): update all non-major dependencies (#10077) (caf00c8), closes #10077
  • fix(deps): update all non-major dependencies (#9985) (855f2f0), closes #9985
  • fix(preview): send configured headers (#9976) (0d20eae), closes #9976
  • chore: cleanup old changelogs (#10056) (9e65a41), closes #10056
  • chore: update 3.1 changelog (#9994) (44dbcbe), closes #9994
  • chore(deps): update @rollup/plugin-node-resolve to v14 (#10078) (3390c87), closes #10078
  • refactor: config hook helper function (#9982) (9c1be10), closes #9982
  • refactor: optimize async and await in code (#9854) (31f5ff3), closes #9854

3.1.0 (2022-09-05)

Main Changes

  • Vite now uses parse5, which parses HTML in the same way as the latest browser versions. This migration gives us a more robust HTML story moving forward (#9678).
  • Vite now supports using objects as hooks to change execution order (#9634). Check out the RFC and the implementation upstream at rollup/rollup#4600 for details and rationale.
      import { resolve } from 'node:path';
      import { readdir } from 'node:fs/promises';
    
      export default function getFilesOnDisk() {
        return {
          name: 'getFilesOnDisk',
          writeBundle: {
            // run this hook sequentially even if the hook is parallel
            sequential: true,
            // push this hook to the 'post' stage, after all normal hooks
            order: 'post',
            // hook implementation
            async handler({ dir }) {
              const topLevelFiles = await readdir(resolve(dir))
              console.log(topLevelFiles)
            }
          }
        }
      }
    Read the updated Rollup Plugin docs for more information.

Note After Vite 3.1, you are no longer going to see [vite] hot updated log messages in the browser console. These messages have been moved to the debug channel (#8855). Check your browser docs to show debug logs.

Features

  • feat(css): format error (#9909) (632fedf), closes #9909
  • perf: bundle create-vite (#9034) (37ac91e), closes #9034
  • feat: stabilize server.resolvedUrls (#9866) (c3f6731), closes #9866
  • feat(client): use debug channel on hot updates (#8855) (0452224), closes #8855
  • feat: relax dep browser externals as warning (#9837) (71cb374), closes #9837
  • feat: support object style hooks (#9634) (757a92f), closes #9634
  • refactor: migrate from vue/compiler-dom to parse5 (#9678) (05b3ce6), closes #9678
  • refactor: use server.ssrTransform (#9769) (246a087), closes #9769
  • perf: legacy avoid insert the entry module css (#9761) (0765ab8), closes #9761

Bug Fixes

  • fix(css): remove css-post plugin sourcemap (#9914) (c9521e7), closes #9914
  • fix(hmr): duplicated modules because of query params mismatch (fixes #2255) (#9773) (86bf776), closes #2255 #9773
  • fix(ssr): enable inlineDynamicImports when input has length 1 (#9904) (9ac5075), closes #9904
  • fix(types): mark explicitImportRequired optional and experimental (#9962) (7b618f0), closes #9962
  • fix: bump esbuild to 0.15.6 (#9934) (091537c), closes #9934
  • refactor(hmr): simplify fetchUpdate (#9881) (8872aba), closes #9881
  • fix: ensure version query for direct node_modules imports (#9848) (e7712ff), closes #9848
  • fix: escape glob path (#9842) (6be971e), closes #9842
  • fix(build): build project path error (#9793) (cc8800a), closes #9793
  • fix(types): explicitly set Vite hooks' this to void (#9885) (2d2f2e5), closes #9885
  • fix: completeSystemWrapPlugin captures function () (fixes #9807) (#9821) (1ee0364), closes #9807 #9821
  • fix: injectQuery break relative path (#9760) (61273b2), closes #9760
  • fix: close socket when client error handled (#9816) (ba62be4), closes #9816
  • fix: handle resolve optional peer deps (#9321) (eec3886), closes #9321
  • fix: module graph ensureEntryFromUrl based on id (#9759) (01857af), closes #9759
  • fix: sanitize asset filenames (#9737) (2f468bb), closes #9737
  • fix: Skip inlining Git LFS placeholders (fix #9714) (#9795) (9c7e43d), closes #9714 #9795
  • fix(html): move importmap before module scripts (#9392) (b386fba), closes #9392

Previous Changelogs

3.1.0-beta.2 (2022-09-02)

See 3.1.0-beta.2 changelog

3.1.0-beta.1 (2022-08-29)

See 3.1.0-beta.1 changelog

3.1.0-beta.0 (2022-08-25)

See 3.1.0-beta.0 changelog

3.0.9 (2022-08-19)

  • feat(ssr): warn if cant analyze dynamic import (#9738) (e0ecb80), closes #9738
  • fix: dynamic import path contain ../ and its own directory (#9350) (c6870f3), closes #9350
  • fix: legacy no resolve asset urls (#9507) (1d6a1eb), closes #9507
  • fix: print error file path when using rollupOptions.output.dir (fix #9100) (#9111) (3bffd14), closes #9100 #9111
  • fix: skip undefined proxy entry (#9622) (e396d67), closes #9622
  • fix(hmr): duplicate link tags (#9697) (9aa9515), closes #9697
  • fix(import-analysis): escape quotes (#9729) (21515f1), closes #9729
  • docs: fix typos in comments and documentation (#9711) (0571232), closes #9711
  • docs: update import.meta.glob jsdocs (#9709) (15ff3a2), closes #9709
  • chore(deps): update all non-major dependencies (#9675) (4e56e87), closes #9675
  • chore(deps): update dependency es-module-lexer to v1 (#9576) (1d8613f), closes #9576
  • perf: avoid ssrTransform object allocation (#9706) (6e58d9d), closes #9706

3.0.8 (2022-08-16)

  • fix: allow ping to http from https website (#9561) (f4b4405), closes #9561
  • fix: use browser field if likely esm (fixes #9652) (#9653) (85e387a), closes #9652 #9653
  • fix(ssr-manifest): filter path undefined when dynamic import (#9655) (1478a2f), closes #9655
  • docs: update WSL2 watch limitation explanation (#8939) (afbb87d), closes #8939

3.0.7 (2022-08-12)

  • chore: fix typo in error message (#9645) (7121ee0), closes #9645
  • fix(config): don't use file url for external files with cjs output (#9642) (73ad707), closes #9642

3.0.6 (2022-08-11)

  • chore: narrow down rollup version (#9637) (fcf4d98), closes #9637
  • feat: show warning on 431 response (#9324) (e8b61bb), closes #9324
  • fix: avoid using import.meta.url for relative assets if output is not ESM (fixes #9297) (#9381) (6d95225), closes #9297 #9381
  • fix: json HMR (fixes #9521) (#9610) (e45d95f), closes #9521 #9610
  • fix: legacy no emit worker (#9500) (9d0b18b), closes #9500
  • fix: use browser field if it is not likely UMD or CJS (fixes #9445) (#9459) (c868e64), closes #9445 #9459
  • fix(optimizer): ignore EACCES errors while scanner (fixes #8916) (#9509) (4e6a77f), closes #8916 #9509
  • fix(ssr): rename objectPattern dynamic key (fixes #9585) (#9609) (ee7f78f), closes #9585 #9609

3.0.5 (2022-08-09)

  • fix: allow tree-shake glob eager css in js (#9547) (2e309d6), closes #9547
  • fix: ignore tsconfig target when bundling config (#9457) (c5e7895), closes #9457
  • fix: log worker plugins in debug mode (#9553) (c1fa219), closes #9553
  • fix: tree-shake modulepreload polyfill (#9531) (1f11a70), closes #9531
  • fix: update dep types (fixes #9475) (#9489) (937cecc), closes #9475 #9489
  • fix(build): normalized output log (#9594) (8bae103), closes #9594
  • fix(config): try catch unlink after load (#9577) (d35a1e2), closes #9577
  • fix(config): use file url for import path (fixes #9471) (#9473) (22084a6), closes #9471 #9473
  • fix(deps): update all non-major dependencies (#9575) (8071325), closes #9575
  • fix(ssr): check root import extension for external (#9494) (ff89df5), closes #9494
  • fix(ssr): use appendRight for import (#9554) (dfec6ca), closes #9554
  • refactor(resolve): remove commonjs plugin handling (#9460) (2042b91), closes #9460
  • chore: init imports var before use (#9569) (905b8eb), closes #9569
  • chore: node prefix lint (#9514) (9e9cd23), closes #9514
  • chore: tidy up eslint config (#9468) (f4addcf), closes #9468
  • chore(deps): update all non-major dependencies (#9478) (c530d16), closes #9478
  • docs: fix incomplete comment (#9466) (5169c51), closes #9466
  • feat(ssr): debug failed node resolve (#9432) (364aae1), closes #9432

3.0.4 (2022-07-29)

  • fix: VITE_PUBLIC_ASSET__hash in HTML (#9247) (a2b24ee), closes #9247
  • fix: inline dynamic imports for ssr-webworker (fixes #9385) (#9401) (cd69358), closes #9385 #9401
  • fix: normalise css paths in manifest on windows (fixes #9295) (#9353) (13e6450), closes #9295 #9353
  • fix: support stylesheets with link tag and media/disable prop (#6751) (e6c8965), closes #6751
  • fix: url constructor import asset no as url (#9399) (122c6e7), closes #9399
  • fix(glob): server perf when globbing huge dirs (#9425) (156a3a4), closes #9425
  • fix(glob): support static template literals (#9352) (183c6fb), closes #9352
  • fix(ssr): allow virtual paths on node modules (#9405) (e60368f), closes #9405
  • chore(deps): update all non-major dependencies (#9347) (2fcb027), closes #9347

3.0.3 (2022-07-25)

  • fix: client type error (#9289) (b82ddfb), closes #9289
  • fix: don't modify config (#9262) (bbc8318), closes #9262
  • fix: entries in ssr.external (#9286) (d420f01), closes #9286
  • fix: externalize explicitly configured linked packages (#9346) (c33e365), closes #9346
  • fix: make resolveConfig() concurrent safe (#9224) (dfaeb2b), closes #9224
  • fix: scanner and optimizer should skip wasm (#9257) (c616077), closes #9257
  • fix: ssrLoadModule executes code in non-strict mode, fixes #9197 (#9199) (5866cfb), closes #9197 #9199
  • fix: support multiline dynamic imports (#9314) (e66cf69), closes #9314
  • fix: support vite client in safari 13 (#9315) (2415193), closes #9315
  • fix: worker relative base should use import.meta.url (#9204) (0358b04), closes #9204
  • fix(glob): handle glob prop access (#9281) (0580215), closes #9281
  • fix(scan): handle .ts import as .js alias (#9282) (0b083ca), closes #9282
  • fix(ssr): no external symlink package (#9296) (ea27701), closes #9296
  • chore: adjust comments/typos (#9325) (ffb2ba3), closes #9325
  • chore: fix code typos (#9033) (ed02861), closes #9033
  • docs: fix @rollup/plugin-commonjs name (#9313) (c417364), closes #9313
  • docs: fix server options link (#9242) (29db3ea), closes #9242
  • docs: update browser baseline features (#9316) (b82ee5d), closes #9316
  • feat: supports cts and mts files (#9268) (0602017), closes #9268
  • feat: worker config call config hook (#9212) (3e510ab), closes #9212
  • feat(css): use esbuild.log* options when minifying (#9210) (88baa53), closes #9210

3.0.2 (2022-07-18)

  • fix: fs serve only edit pathname (fixes #9148) (#9173) (28cffc9), closes #9148 #9173
  • fix: prevent null pathname error (#9188) (d66ffd0), closes #9188
  • fix: return 500 on proxy error only if possible (fixes #9172) (#9193) (b2f6bdc), closes #9172 #9193
  • fix(deps): update all non-major dependencies (#9176) (31d3b70), closes #9176
  • fix(dev): build.ssr is set during dev, fix #9134 (#9187) (99b0e67), closes #9134 #9187
  • fix(ssr): strip NULL_BYTE_PLACEHOLDER before import (#9124) (c5f2dc7), closes #9124

3.0.1 (2022-07-18)

  • fix: avoid errors when loading the overlay code in workers (#9064) (a52b45e), closes #9064
  • fix: check server after tsconfig reload (#9106) (d12d469), closes #9106
  • fix: disable keepNames in vite:esbuild (fixes #9164) (#9166) (e6f3b02), closes #9164 #9166
  • fix: externalize workspace relative import when bundle config (#9140) (5a8a3ab), closes #9140
  • fix: mention that Node.js 13/15 support is dropped (fixes #9113) (#9116) (2826303), closes #9113 #9116
  • fix: resolve drive relative path (#9097) (b393451), closes #9097
  • fix: respect .mjs .cjs extension in all modes (#9141) (5ea70b3), closes #9141
  • fix: return 500 on proxy error only if possible (fixes #9172) (#9175) (d2f02a8), closes #9172 #9175
  • fix: server.proxy ws error causes crash (#9123) (c2426d1), closes #9123
  • fix: ssr.external/noExternal should apply to packageName (#9146) (5844d8e), closes #9146
  • fix: use correct require extension to load config (#9118) (ebf682e), closes #9118
  • fix(esbuild): always support dynamic import and import meta (#9105) (57a7936), closes #9105
  • feat: allow declaring dirname (#9154) (1e078ad), closes #9154
  • refactor: always load config with esbuild bundled code (#9121) (a2b3131), closes #9121
  • docs: update default for optimizeDeps.disabled (#9078) (4fbf9a8), closes #9078
  • chore: 3.0 release notes and bump peer deps (#9072) (427ba26), closes #9072

3.0.0 (2022-07-13)

Main Changes

Vite 3 is out! Read the Vite 3 Announcement blog post

  • New docs theme using VitePress v1 alpha: https://vitejs.dev
  • Vite CLI
    • The default dev server port is now 5173, with the preview server starting at 4173.
    • The default dev server host is now localhost instead of 127.0.0.1.
  • Compatibility
    • Vite no longer supports Node v12, which reached its EOL. Node 14.18+ is now required.
    • Vite is now published as ESM, with a CJS proxy to the ESM entry for compatibility.
    • The Modern Browser Baseline now targets browsers which support the native ES Modules and native ESM dynamic import and import.meta.
    • JS file extensions in SSR and lib mode now use a valid extension (js, mjs, or cjs) for output JS entries and chunks based on their format and the package type.
  • Architecture changes
    • Vite now avoids full reload during cold start when imports are injected by plugins in while crawling the initial statically imported modules (#8869).
    • Vite uses ESM for the SSR build by default, and previous SSR externalization heuristics are no longer needed.
  • import.meta.glob has been improved, read about the new features in the Glob Import Guide
  • The WebAssembly import API has been revised to avoid collisions with future standards. Read more in the WebAssembly guide
  • Improved support for relative base.
  • Experimental Features
  • Bundle size reduction
    • Terser is now an optional dependency. If you use build.minify: 'terser', you'll need to install it (npm add -D terser)
    • node-forge moved out of the monorepo to @vitejs/plugin-basic-ssl
  • Options that were already deprecated in v2 have been removed.

Note Before updating, check out the migration guide from v2

Features

  • feat: expose server resolved urls (#8986) (26bcdc3), closes #8986
  • feat: show ws connection error (#9007) (da7c3ae), closes #9007
  • docs: update api-javascript (#8999) (05b17df), closes #8999
  • refactor: opt-in optimizeDeps during build and SSR (#8965) (f8c8cf2), closes #8965
  • refactor!: move basic ssl setup to external plugin, fix #8532 (#8961) (5c6cf5a), closes #8532 #8961
  • feat: avoid scanner during build and only optimize CJS in SSR (#8932) (339d9e3), closes #8932
  • feat: improved cold start using deps scanner (#8869) (188f188), closes #8869
  • feat: ssr.optimizeDeps (#8917) (f280dd9), closes #8917
  • feat: support import assertions (#8937) (2390422), closes #8937
  • feat: accept AcceptedPlugin type for postcss plugin (#8830) (6886078), closes #8830
  • feat: ssrBuild flag in config env (#8863) (b6d655a), closes #8863
  • feat: experimental.renderBuiltUrl (revised build base options) (#8762) (895a7d6), closes #8762
  • feat: respect esbuild minify config for css (#8811) (d90409e), closes #8811
  • feat: use esbuild supported feature (#8665) (2061d41), closes #8665
  • feat: respect esbuild minify config (#8754) (8b77695), closes #8754
  • feat: update rollup commonjs plugin to v22 (#8743) (d4dcdd1), closes #8743
  • feat: enable tree-shaking for lib es (#8737) (5dc0f72), closes #8737
  • feat: supports cts and mts config (#8729) (c2b09db), closes #8729
  • feat: bump minimum node version to 14.18.0 (#8662) (8a05432), closes #8662
  • feat: experimental.buildAdvancedBaseOptions (#8450) (8ef7333), closes #8450
  • feat: export esbuildVersion and rollupVersion (#8675) (15ebe1e), closes #8675
  • feat: print resolved address for localhost (#8647) (eb52d36), closes #8647
  • feat(hmr): experimental.hmrPartialAccept (#7324) (83dab7e), closes #7324
  • refactor: type client maps (#8626) (cf87882), closes #8626
  • feat: cleaner default dev output (#8638) (dbd9688), closes #8638
  • feat: legacy options to revert to v2 strategies (#8623) (993b842), closes #8623
  • feat: support async plugins (#8574) (caa8a58), closes #8574
  • feat: support cjs noExternal in SSR dev, fix #2579 (#8430) (11d2191), closes #2579 #8430
  • feat(dev): added assets to manifest (#6649) (cdf744d), closes #6649
  • feat!: appType (spa, mpa, custom), boolean middlewareMode (#8452) (14db473), closes #8452
  • feat: 500 response if the node proxy request fails (#7398) (73e1775), closes #7398
  • feat: expose createFilter util (#8562) (c5c424a), closes #8562
  • feat: better config __dirname support (#8442) (51e9195), closes #8442
  • feat: expose version (#8456) (e992594), closes #8456
  • feat: handle named imports of builtin modules (#8338) (e2e44ff), closes #8338
  • feat: preserve process env vars in lib build (#8090) (908c9e4), closes #8090
  • refactor!: make terser an optional dependency (#8049) (164f528), closes #8049
  • chore: resolve ssr options (#8455) (d97e402), closes #8455
  • perf: disable postcss sourcemap when unused (#8451) (64fc61c), closes #8451
  • feat: add ssr.format to force esm output for ssr (#6812) (337b197), closes #6812
  • feat: default esm SSR build, simplified externalization (#8348) (f8c92d1), closes #8348
  • feat: derive proper js extension from package type (#8382) (95cdd81), closes #8382
  • feat: ssr build using optimized deps (#8403) (6a5a5b5), closes #8403
  • refactor: ExportData.imports to ExportData.hasImports (#8355) (168de2d), closes #8355
  • feat: scan free dev server (#8319) (3f742b6), closes #8319
  • feat: non-blocking esbuild optimization at build time (#8280) (909cf9c), closes #8280
  • feat: non-blocking needs interop (#7568) (531cd7b), closes #7568
  • refactor(cli): improve output aesthetics (#6997) (809ab47), closes #6997
  • dx: sourcemap combine debug utils (#8307) (45dba50), closes #8307
  • feat: sourcemap for importAnalysis (#8258) (a4e4d39), closes #8258
  • feat: spa option, preview and dev for MPA and SSR apps (#8217) (d7cba46), closes #8217
  • feat: vite connected logs changed to console.debug (#7733) (9f00c41), closes #7733
  • feat: worker support query url (#7914) (95297dd), closes #7914
  • feat(wasm): new wasm plugin (.wasm?init) (#8219) (75c3bf6), closes #8219
  • build!: bump targets (#8045) (66efd69), closes #8045
  • feat!: migrate to ESM (#8178) (76fdc27), closes #8178
  • feat!: relative base (#7644) (09648c2), closes #7644
  • feat(css): warn if url rewrite has no importer (#8183) (0858450), closes #8183
  • feat: allow any JS identifier in define, not ASCII-only (#5972) (95eb45b), closes #5972
  • feat: enable generatedCode: 'es2015' for rollup build (#5018) (46d5e67), closes #5018
  • feat: rework dynamic-import-vars (#7756) (80d113b), closes #7756
  • feat: worker emit fileName with config (#7804) (04c2edd), closes #7804
  • feat(glob-import): support { import: '*' } (#8071) (0b78b2a), closes #8071
  • build!: remove node v12 support (#7833) (eeac2d2), closes #7833
  • feat!: rework import.meta.glob (#7537) (330e0a9), closes #7537
  • feat!: vite dev default port is now 5173 (#8148) (1cc2e2d), closes #8148
  • refactor: remove deprecated api for 3.0 (#5868) (b5c3709), closes #5868
  • chore: stabilize experimental api (#7707) (b902932), closes #7707
  • test: migrate to vitest (#8076) (8148f67), closes #8076

Bug Fixes

  • fix: prevent production node_env in serve (#9066) (7662998), closes #9066
  • fix: reload on restart with middleware mode (fixes #9038) (#9040) (e372693), closes #9038 #9040
  • fix: remove ws is already closed error (#9041) (45b8b53), closes #9041
  • fix(ssr): sourcemap content (fixes #8657) (#8997) (aff4544), closes #8657 #8997
  • fix: respect explicitly external/noExternal config (#8983) (e369880), closes #8983
  • fix: cjs interop export names local clash, fix #8950 (#8953) (2185f72), closes #8950 #8953
  • fix: handle context resolve options (#8966) (57c6c15), closes #8966
  • fix: re-encode url to prevent fs.allow bypass (fixes #8498) (#8979) (b835699), closes #8498 #8979
  • fix(scan): detect import .ts as .js (#8969) (752af6c), closes #8969
  • fix: ssrBuild is optional, avoid breaking VitePress (#8912) (722f514), closes #8912
  • fix(css): always use css module content (#8936) (6e0dd3a), closes #8936
  • fix: avoid optimizing non-optimizable external deps (#8860) (cd8d63b), closes #8860
  • fix: ensure define overrides import.meta in build (#8892) (7d810a9), closes #8892
  • fix: ignore Playwright test results directory (#8778) (314c09c), closes #8778
  • fix: node platform for ssr dev regression (#8840) (7257fd8), closes #8840
  • fix: optimize deps on dev SSR, builtin imports in node (#8854) (d49856c), closes #8854
  • fix: prevent crash when the pad amount is negative (#8747) (3af6a1b), closes #8747
  • fix: reverts #8278 (a0da2f0), closes #8278
  • fix: server.force deprecation and force on restart API (#8842) (c94f564), closes #8842
  • fix(deps): update all non-major dependencies (#8802) (a4a634d), closes #8802
  • fix(hmr): set isSelfAccepting unless it is delayed (#8898) (ae34565), closes #8898
  • fix(worker): dont throw on import.meta.url in ssr (#8846) (ef749ed), closes #8846
  • fix: deps optimizer should wait on entries (#8822) (2db1b5b), closes #8822
  • fix: incorrectly resolving knownJsSrcRE files from root (fixes #4161) (#8808) (e1e426e), closes #4161 #8808
  • fix: /@fs/ dir traversal with escaped chars (fixes #8498) (#8804) (6851009), closes #8498 #8804
  • fix: preserve extension of css assets in the manifest (#8768) (9508549), closes #8768
  • fix: always remove temp config (#8782) (2c2a86b), closes #8782
  • fix: ensure deps optimizer first run, fixes #8750 (#8775) (3f689a4), closes #8750 #8775
  • fix: remove buildTimeImportMetaUrl (#8785) (cd32095), closes #8785
  • fix: skip inline html (#8789) (4a6408b), closes #8789
  • fix(optimizer): only run require-import conversion if require'd (#8795) (7ae0d3e), closes #8795
  • perf: avoid sourcemap chains during dev (#8796) (1566f61), closes #8796
  • perf(lib): improve helper inject regex (#8741) (19fc7e5), closes #8741
  • fix: avoid type mismatch with Rollup (fix #7843) (#8701) (87e51f7), closes #7843 #8701
  • fix: optimizeDeps.entries transformRequest url (fix #8719) (#8748) (9208c3b), closes #8719 #8748
  • fix(hmr): HMR_PORT should not be 'undefined' (#8761) (3271266), closes #8761
  • fix: respect rollupOptions.external for transitive dependencies (#8679) (4f9097b), closes #8679
  • fix: use esbuild platform browser/node instead of neutral (#8714) (a201cd4), closes #8714
  • fix: disable inlineDynamicImports for ssr.target = node (#8641) (3b41a8e), closes #8641
  • fix: infer hmr ws target by client location (#8650) (4061ee0), closes #8650
  • fix: non-relative base public paths in CSS files (#8682) (d11d6ea), closes #8682
  • fix: SSR with relative base (#8683) (c1667bb), closes #8683
  • fix: filter of BOM tags in json plugin (#8628) (e10530b), closes #8628
  • fix: revert #5902, fix #8243 (#8654) (1b820da), closes #8243 #8654
  • fix(optimizer): use simple browser external shim in prod (#8630) (a32c4ba), closes #8630
  • fix(server): skip localhost verbatim dns lookup (#8642) (7632247), closes #8642
  • fix(wasm): support inlined WASM in Node < v16 (fix #8620) (#8622) (f586b14), closes #8620 #8622
  • fix: allow cache overlap in parallel builds (#8592) (2dd0b49), closes #8592
  • fix: avoid replacing defines and NODE_ENV in optimized deps (fix #8593) (#8606) (739175b), closes #8593 #8606
  • fix: sequential injection of tags in transformIndexHtml (#5851) (#6901) (649c7f6), closes #5851 #6901
  • fix(asset): respect assetFileNames if rollupOptions.output is an array (#8561) (4e6c26f), closes #8561
  • fix(css): escape pattern chars from base path in postcss dir-dependency messages (#7081) (5151e74), closes #7081
  • fix(optimizer): browser mapping for yarn pnp (#6493) (c1c7af3), closes #6493
  • fix: add missed JPEG file extensions to KNOWN_ASSET_TYPES (#8565) (2dfc015), closes #8565
  • fix: default export module transformation for vitest spy (#8567) (d357e33), closes #8567
  • fix: default host to localhost instead of 127.0.0.1 (#8543) (49c0896), closes #8543
  • fix: dont handle sigterm in middleware mode (#8550) (c6f43dd), closes #8550
  • fix: mime missing extensions (#8568) (acf3024), closes #8568
  • fix: objurl for type module, and concurrent tests (#8541) (26ecd5a), closes #8541
  • fix: outdated optimized dep removed from module graph (#8533) (3f4d22d), closes #8533
  • fix(config): only rewrite .js loader in loadConfigFromBundledFile (#8556) (2548dd3), closes #8556
  • fix(deps): update all non-major dependencies (#8558) (9a1fd4c), closes #8558
  • fix(ssr): dont replace rollup input (#7275) (9a88afa), closes #7275
  • fix: deps optimizer idle logic for workers (fix #8479) (#8511) (1e05548), closes #8479 #8511
  • fix: not match \n when injecting esbuild helpers (#8414) (5a57626), closes #8414
  • fix: respect optimize deps entries (#8489) (fba82d0), closes #8489
  • fix(optimizer): encode _ and . in different way (#8508) (9065b37), closes #8508
  • fix(optimizer): external require-import conversion (fixes #2492, #3409) (#8459) (1061bbd), closes #2492 #3409 #8459
  • fix: make array acornInjectPlugins work (fixes #8410) (#8415) (08d594b), closes #8410 #8415
  • fix: SSR deep imports externalization (fixes #8420) (#8421) (89d6711), closes #8420 #8421
  • fix: import.meta.accept() -> import.meta.hot.accept() (#8361) (c5185cf), closes #8361
  • fix: return type of handleHMRUpdate (#8367) (79d5ce1), closes #8367
  • fix: sourcemap source point to null (#8299) (356b896), closes #8299
  • fix: ssr-manifest no base (#8371) (37eb5b3), closes #8371
  • fix(deps): update all non-major dependencies (#8391) (842f995), closes #8391
  • fix: preserve annotations during build deps optimization (#8358) (334cd9f), closes #8358
  • fix: missing types for es-module-lexer (fixes #8349) (#8352) (df2cc3d), closes #8349 #8352
  • fix(optimizer): transpile before calling transformGlobImport (#8343) (1dbc7cc), closes #8343
  • fix(deps): update all non-major dependencies (#8281) (c68db4d), closes #8281
  • fix: expose client dist in exports (#8324) (689adc0), closes #8324
  • fix(cjs): build cjs for loadEnv (#8305) (80dd2df), closes #8305
  • fix: correctly replace process.env.NODE_ENV (#8283) (ec52baa), closes #8283
  • fix: dev sourcemap (#8269) (505f75e), closes #8269
  • fix: glob types (#8257) (03b227e), closes #8257
  • fix: srcset handling in html (#6419) (a0ee4ff), closes #6419
  • fix: support set NODE_ENV in scripts when custom mode option (#8218) (adcf041), closes #8218
  • fix(hmr): catch thrown errors when connecting to hmr websocket (#7111) (4bc9284), closes #7111
  • fix(plugin-legacy): respect entryFileNames for polyfill chunks (#8247) (baa9632), closes #8247
  • fix(plugin-react): broken optimized deps dir check (#8255) (9e2a1ea), closes #8255
  • fix!: do not fixStacktrace by default (#7995) (23f8e08), closes #7995
  • fix(glob): properly handles tailing comma (#8181) (462be8e), closes #8181
  • fix: add hash to lib chunk names (#7190) (c81cedf), closes #7190
  • fix: allow css to be written for systemjs output (#5902) (780b4f5), closes #5902
  • fix: client full reload (#8018) (2f478ed), closes #8018
  • fix: handle optimize failure (#8006) (ba95a2a), closes #8006
  • fix: increase default HTTPS dev server session memory limit (#6207) (f895f94), closes #6207
  • fix: relative path html (#8122) (d0deac0), closes #8122
  • fix: Remove ssrError when invalidating a module (#8124) (a543220), closes #8124
  • fix: remove useless /__vite_ping handler (#8133) (d607b2b), closes #8133
  • fix: typo in #8121 (#8143) (c32e3ac), closes #8121 #8143
  • fix: use Vitest for unit testing, clean regex bug (#8040) (63cd53d), closes #8040
  • fix: Vite cannot load configuration files in the link directory (#4180) (#4181) (a3fa1a3), closes #4180 #4181
  • fix: vite client types (#7877) (0e67fe8), closes #7877
  • fix: warn for unresolved css in html (#7911) (2b58cb3), closes #7911
  • fix(build): use crossorigin for module preloaded (85cab70)
  • fix(client): wait on the socket host, not the ping host (#6819) (ae56e47), closes #6819
  • fix(css): hoist external @import for non-split css (#8022) (5280908), closes #8022
  • fix(css): preserve dynamic import css code (fix #5348) (#7746) (12d0cc0), closes #5348 #7746
  • fix(glob): wrap glob compile output in function invocation (#3682) (bb603d3), closes #3682
  • fix(lib): enable inlineDynamicImports for umd and iife (#8126) (272a252), closes #8126
  • fix(lib): use proper extension (#6827) (34df307), closes #6827
  • fix(ssr): avoid transforming json file in ssrTransform (#6597) (a709440), closes #6597
  • fix(lib)!: remove format prefixes for cjs and esm (#8107) (ad8c3b1), closes #8107

Previous Changelogs

3.0.0-beta.10 (2022-07-11)

See 3.0.0-beta.10 changelog

3.0.0-beta.9 (2022-07-08)

See 3.0.0-beta.9 changelog

3.0.0-beta.8 (2022-07-08)

See 3.0.0-beta.8 changelog

3.0.0-beta.7 (2022-07-06)

See 3.0.0-beta.7 changelog

3.0.0-beta.6 (2022-07-04)

See 3.0.0-beta.6 changelog

3.0.0-beta.5 (2022-06-28)

See 3.0.0-beta.5 changelog

3.0.0-beta.4 (2022-06-27)

See 3.0.0-beta.4 changelog

3.0.0-beta.3 (2022-06-26)

See 3.0.0-beta.3 changelog

3.0.0-beta.2 (2022-06-24)

See 3.0.0-beta.2 changelog

3.0.0-beta.1 (2022-06-22)

See 3.0.0-beta.1 changelog

3.0.0-beta.0 (2022-06-21)

See 3.0.0-beta.0 changelog

3.0.0-alpha.14 (2022-06-20)

See 3.0.0-alpha.14 changelog

3.0.0-alpha.13 (2022-06-19)

See 3.0.0-alpha.13 changelog

3.0.0-alpha.12 (2022-06-16)

See 3.0.0-alpha.12 changelog

3.0.0-alpha.11 (2022-06-14)

See 3.0.0-alpha.11 changelog

3.0.0-alpha.10 (2022-06-10)

See 3.0.0-alpha.10 changelog

3.0.0-alpha.9 (2022-06-01)

See 3.0.0-alpha.9 changelog

3.0.0-alpha.8 (2022-05-31)

See 3.0.0-alpha.8 changelog

3.0.0-alpha.7 (2022-05-27)

See 3.0.0-alpha.7 changelog

3.0.0-alpha.6 (2022-05-27)

See 3.0.0-alpha.6 changelog

3.0.0-alpha.5 (2022-05-26)

See 3.0.0-alpha.5 changelog

3.0.0-alpha.4 (2022-05-25)

See 3.0.0-alpha.4 changelog

3.0.0-alpha.3 (2022-05-25)

See 3.0.0-alpha.3 changelog

3.0.0-alpha.2 (2022-05-23)

See 3.0.0-alpha.2 changelog

3.0.0-alpha.1 (2022-05-18)

See 3.0.0-alpha.1 changelog

3.0.0-alpha.0 (2022-05-13)

See 3.0.0-alpha.0 changelog

Previous Changelogs

2.9.x (2022-03-30 - 2022-08-12)

See 2.9.15 changelog

2.8.x (2022-02-09 - 2022-03-01)

See 2.8.6 changelog

2.7.x (2021-10-28 - 2021-12-28)

See 2.7.13 changelog

2.6.x (2021-09-20 - 2021-10-27)

See 2.6.14 changelog

2.5.x (2021-08-03 - 2021-09-13)

See 2.5.10 changelog

2.4.x (2021-06-27 - 2021-07-27)

See 2.4.4 changelog

2.3.x (2021-05-11 - 2021-06-19)

See 2.3.8 changelog

2.2.x (2021-04-19 - 2021-05-03)

See 2.2.4 changelog

2.1.x (2021-03-15 - 2021-03-31)

See 2.1.5 changelog

2.0.x (2021-02-16 - 2021-03-02)

See 2.0.5 changelog