
Vite CHANGELOG 詳解從 6.0 到 8.2.2 的版本演進、生成機制與升級實操指南【免費下載鏈接】viteNext generation frontend tooling. Its fast!項目地址: https://gitcode.com/GitHub_Trending/vi/vitepackages/vite/CHANGELOG.md 是 Vite 核心包的官方版本變更記錄完整記錄了 Vite 6.0.02024-11-26至今每一個發(fā)布版本的 Feature、Bug Fix、破壞性變更與內(nèi)部重構(gòu)共約 2400 行。本文基于該文檔及其配套的發(fā)布腳本scripts/prepare-release.ts、scripts/extract-changelog.ts進行解讀先講清楚 Changelog 的格式規(guī)范與閱讀方法再梳理 6.0 / 7.0 / 8.0 三個大版本與 8.x 系列的關(guān)鍵演進節(jié)點最后說明它如何由發(fā)布流水線自動生成幫助你在升級 Vite 前快速、準(zhǔn)確地判斷風(fēng)險與收益。一、Changelog 的格式規(guī)范如何看懂每一個版本條目版本頭部的寫法文檔中每個版本以二級標(biāo)題開頭格式為## 版本號 (發(fā)布日期)。其中v8.2.1...v8.2.2這樣的 compare 鏈接標(biāo)明該版本相對上一版本包含了哪些提交。值得注意的是標(biāo)題是否包在small標(biāo)簽內(nèi)隱含了版本語義小版本patch用small包裹表示向后兼容的修訂。例如文檔第一行 8.2.2 條目## small8.2.2 (2026-08-20)/small次版本minor與大版本major不加small例如 8.2.0、8.1.0、8.0.0通常意味著包含新 Feature 或破壞性變更beta 版本按 minor 標(biāo)題處理如 8.2.0-beta.0但不會作為正式穩(wěn)定版被廣泛引用。條目分節(jié)的固定結(jié)構(gòu)每個版本內(nèi)部按固定小節(jié)組織順序大致為BREAKING CHANGES僅大版本→Features→Bug Fixes→Performance Improvements→Documentation→Miscellaneous Chores→Code Refactoring→Tests→Build System→Continuous Integration。并非每個版本都有全部小節(jié)patch 版本往往只有Bug Fixes。例如 8.2.2 就包含了 Features、Bug Fixes、Documentation、Miscellaneous Chores、Code Refactoring、Tests、Build System 七個小節(jié)而 8.1.2 僅有 4 條 Bug Fixes。單條記錄的三段式信息每條記錄都是* **scope:** 變更描述 (#PR 號) (commit 短哈希)的結(jié)構(gòu)。以 8.2.2 中的一條為例CHANGELOG 第 11 行* **css:** dont pass empty targets to lightningcss (#23295) (2804636)三個信息位各有用途scope加粗前綴標(biāo)識受影響的子系統(tǒng)高頻出現(xiàn)的 scope 包括css、optimizer/optimize-deps、server/dev、ssr、build、hmr、module-runner、bundled-dev、resolve、html、worker、wasm、glob、config、deps等。沒有 scope 前綴的條目如reduce Windows 8.3-short-name detection false-positives表示影響范圍較廣的核心行為修復(fù)PR 號是理解變更細(xì)節(jié)的最佳入口——每條記錄都對應(yīng)一個可追溯的 Pull Request從 scope 和描述可以定位到具體 issue/PR 討論commit 哈希用于在 git 歷史中直接定位提交。**deps:**前綴的條目是依賴升級記錄例如 8.2.2 中的update rolldown-related dependencies (#23218)這類條目在幾乎每個版本中都會出現(xiàn)說明 Vite 與 Rolldown 等核心依賴保持高頻同步。二、當(dāng)前版本與運行環(huán)境要求packages/vite/package.json 中的version字段為8.2.2與 Changelog 頂部條目一致即當(dāng)前倉庫快照對應(yīng)的最新穩(wěn)定版。運行環(huán)境要求可以從 package.json 的 engines 字段 確認(rèn)engines: { node: ^20.19.0 || 22.12.0 }即Node.js 20.19 或 22.12。這一要求始于 7.0.0——7.0.0 的 BREAKING CHANGES 中明確列有bump required node version to 20.19, 22.12 and remove cjs build (#20032)意味著從 Vite 7 開始包只以 ESM 形式分發(fā)不再提供 CJS 構(gòu)建低版本 Node 用戶升級 7.x/8.x 前必須先升級 Node。三、三大里程碑版本6.0、7.0、8.0Changelog 中三個大版本條目都附有發(fā)布公告、文檔與遷移指南的入口正文信息量遠大于 patch 版本是升級判斷的核心依據(jù)。Vite 6.0.02024-11-26Environments API 登場6.0.0 條目 是文檔中信息密度最高的大版本之一核心是Environment APIEnvironment API (#16471)這是 Vite 6 的主打特性將 dev/SSR/lib 等場景統(tǒng)一抽象為 Environment圍繞它衍生出一批相關(guān)變更introduce RunnableDevEnvironment (#18190)、add environment::listen (#18263)、expose EnvironmentOptions type (#18080)SSR 側(cè)能力增強enable dependencies discovery and pre-bundling in ssr environments (#18358)、add ssr.resolve.mainFields option (#18646)模塊獲取統(tǒng)一use a single transport for fetchModule and HMR support (#18362)ModuleRunner 側(cè)enable HMR by default on ModuleRunner side (#18749)。其他值得注意的 6.0 變更均見 6.0.0 Features/Breaking 小節(jié)asset: add ?inline and ?no-inline queries to control inlining (#15454)——資產(chǎn)內(nèi)聯(lián)從此有了顯式控制開關(guān)json: add json.stringify: auto and make that the default (#18303)css: change default sass api to modern/modern-compiler (#17937)update to chokidar v4 (#18453)、proxy bypass with WebSocket (#18070)、html: support vite-ignore attribute to opt-out of processing (#18494)破壞性變更還包括remove fs.cachedChecks option (#18493)、drop node 21 support in version ranges (#18729)。Vite 7.0.02025-06-24環(huán)境收緊與構(gòu)建體系切換7.0.0 條目 的 BREAKING CHANGES 小節(jié)集中體現(xiàn)了這一版做減法的主題破壞性變更PR影響Node 版本要求提升到 20.19/22.12移除 CJS 構(gòu)建#20032低版本 Node 與 CJS 消費方受影響build.target提升并命名為baseline-widely-available#20007默認(rèn)產(chǎn)物語法基線上移CSS 始終使用 sass compiler API、移除 sass legacy API#19978 / #19977老式 sass 配置需遷移移除splitVendorChunkPlugin#19255使用manualChunks替代移除HotBroadcaster及相關(guān)類型#19988 / #19987插件需改用新 HMR 廣播機制移除experimental.skipSsrTransform#20038SSR 轉(zhuǎn)換不再可整體跳過Feature 方面7.0 引入了插件系統(tǒng)的重要擴展見 7.0.0 Features 小節(jié)buildApp hook (#19971)、this.meta.viteVersion (#20088)、import.meta.glob的base選項#20163、PluginContext available for Vite-specific hooks (#19936)并將css.preprocessorMaxWorkers與optimizeDeps.noDiscovery兩個實驗項正式穩(wěn)定化。Vite 8.0.02026-03-12Rolldown 合并Vite 2 以來最大架構(gòu)變更8.0.0 條目 是整份 Changelog 的分水嶺其 BREAKING CHANGES 小節(jié)只有三條但分量極重? BREAKING CHANGES * remove import.meta.hot.accept resolution fallback (#21382) * update default browser target (#21193) * the epic rolldown-vite merge (#21189)其中the epic rolldown-vite merge標(biāo)志著Rolldown 成為 Vite 唯一的打包器取代了此前esbuild 負(fù)責(zé)開發(fā)、Rollup 負(fù)責(zé)生產(chǎn)的雙打包器架構(gòu)。倉庫內(nèi)的 Vite 8 發(fā)布公告 對這一變更有完整闡述Rolldown 是 Rust 編寫、兼容 Rollup 插件 API 的打包器遷移先以獨立的rolldown-vite包進行技術(shù)預(yù)覽經(jīng)社區(qū)真實項目驗證后才在 8.0 穩(wěn)定版中合并公告稱之為自 Vite 2 以來最重要的架構(gòu)變更并列出了 Linear、Ramp、Mercedes-Benz.io、Beehiiv 等團隊在生產(chǎn)構(gòu)建中觀察到的構(gòu)建時長下降。8.0.0 的 Features 小節(jié)L643-L681同樣密集可歸納為幾個方向打包器與插件體系the epic rolldown-vite merge (#21189)、introduce v2 native plugins and enable it by default (#21268)、highly experimental full bundle mode (#21235)全量打包開發(fā)模式后續(xù)在 8.0.x 中以bundled-dev名義持續(xù)演進Rolldown 版本推進條目中密集出現(xiàn)update rolldown to 1.0.0-beta.x / rc.x的記錄直至 8.0.0 穩(wěn)定版鎖定1.0.0-rc.9可見 8.0 的開發(fā)周期2025-12 至 2026-03與 Rolldown 1.0 的定型過程完全同步開發(fā)者體驗integrate devtools (#21331)Vite Devtools 集成、forward browser console logs and errors to dev server terminal (#20916)瀏覽器控制臺轉(zhuǎn)發(fā)到終端便于 Agent 協(xié)作場景、shortcuts case insensitive (#21224)Wasm 與 CSSwasm: add SSR support for .wasm?init (#21102)、css: support es2024/es2025 build target for lightningcss (#21294/#21769)、stylus Evaluator support (#21376)構(gòu)建輸出manifest: add assets field for standalone CSS entry points (#21015)、add ignoreOutdatedRequests option to optimizeDeps (#21364)。此外8.0.0 之后還有大量8.0.x的 patch 版本8.0.1 到 8.0.16持續(xù)將 Rolldown 從 rc.10 推進到 1.0.3 并修復(fù)環(huán)境級配置合并rolldownOptions/rollupOptions merging at environment level (#21612)、isBundled按環(huán)境區(qū)分等問題——這一連串 patch 是 Rolldown 合并后穩(wěn)定化工作的直接證據(jù)。四、8.1 與 8.2 系列穩(wěn)定版之后的持續(xù)演進8.1.02026-06-23與 8.1.0-beta.02026-06-158.1.0-beta.0 條目 是 8.x 系列中 Feature 最豐富的一次主要包括構(gòu)建build: chunk importmap (#21580)——構(gòu)建產(chǎn)物引入 chunk 級 import map 機制8.0.x 中已有大量相關(guān)的chunkImportMap修復(fù)鋪墊如 8.0.12 的 worker 相關(guān)修復(fù)開發(fā)wasm: direct .wasm imports (WASM ESM Integration) (#21779)——.wasm 可直接以 ESM 方式導(dǎo)入integrate with Vite Task for zero-config build caching (#22453)——零配置構(gòu)建緩存配置rename server.hmr options to server.ws options (#21357)HMR 的 WebSocket 選項更名為server.ws、import.meta.glob support caseSensitive option (#21707)、html: add html.additionalAssetSources option (#21412)CSScss: support lightningcss plugin dependency (#21748)、css: support external CSS with lightningcss (#18389)依賴優(yōu)化use node_modules/.vite as cacheDir when node_modules exists (#21777)明確緩存目錄默認(rèn)落點。8.1.0 正式版L254-L278在此基礎(chǔ)上主要做安全與穩(wěn)定性收尾如extend server.fs.deny list with common files (#22707)、update rolldown to 1.1.2 (#22695)。其后的 8.1.4、8.1.5 等 patch 中出現(xiàn)了值得注意的性能與工程條目8.1.1 中css: resolve tsconfig paths in CSS and Sass import (#22775)使 tsconfig 路徑別名可用于 CSSimport8.1.4 中l(wèi)egacy: prefer oxc as minifier (#22468)表明vitejs/plugin-legacy的壓縮器也切換到了 Oxc。8.2.02026-07-30至 8.2.22026-08-20當(dāng)前最新8.2.0-beta.0 的亮點是頂層input選項add input option (#22642)input提升為頂層配置后續(xù)配套了support resolving top-level input option with plugins (#23101)8.2.0 正式版與dont mutate the user config when resolving the lib entry from the top-level input (#23135)8.2.1等修復(fù)add input to server.fs.allow (#23035)server.fs.allow自動納入input路徑依賴優(yōu)化器生態(tài)optimizer: support aube lockfile (#22813)與support nub lockfile (#22891)——依賴掃描器開始支持更多包管理器的 lockfile 格式此前 7.2.0 已支持 rush lockfile見 7.2.0-beta.0 條目bundled-dev 持續(xù)成熟update rolldown-related dependencies and use client-side HMR in bundled-dev (#22961)配合 8.0.13 首次加入的bundled-dev: add lazy bundling support (#21406)L378-L397全量打包開發(fā)模式的 HMR 與懶編譯能力在 8.2 中逐步完善。8.2.0 正式版L81-L107還包含bundled-dev: support worker file update accepted by HMR (#23068)、config: include column in config incompatibility location (#23064)等8.2.1L46-L80修復(fù)了client chunkImportMap work with sharedPlugins: true、server: use a random port when port is 0等問題并有一項性能改進css: look up pure CSS chunks through a Set (#23114)。最新的 8.2.2 則是純穩(wěn)定化版本唯一 Feature 為widen vitejs/devtools peer range to v0.5.0 (#23302)Bug Fixes 集中在 bundled-dev循環(huán)導(dǎo)入改為熱更新而非整頁刷新#23259、module-runner在途循環(huán)檢測排除已完成模塊#23009、resolvepreserveSymlinks生效于 root 解析#23198、define對$前綴鍵的正則轉(zhuǎn)義匹配#23249等細(xì)節(jié)。五、Beta 版本歸檔與歷史版本入口Changelog 對 beta 版本采用外鏈歸檔而非全文內(nèi)聯(lián)8.0.0 條目末尾的 Beta Changelogs 小節(jié) 逐條列出 8.0.0-beta.02025-12-03至 beta.182026-03-09的日期并指引到對應(yīng) git tag 上的 CHANGELOG 快照7.0.0 的 Beta Changelogs 同理。文末還有 Previous Changelogs 小節(jié)將 5.4.x 到 2.0.x 的每個系列按 tag 歸檔如5.4.11、4.5.0、3.2.6并標(biāo)注了各系列的起止日期。這意味著穩(wěn)定版的完整記錄在本文件中beta 與 5.x 及更早版本的歷史則通過 git tag 固定文件本身保持可維護的體量。六、Changelog 如何自動生成倉庫發(fā)布腳本解讀這份 Changelog 不是手寫維護的而是由發(fā)布流水線基于 conventional commits 自動生成。倉庫中的三個腳本揭示了完整鏈路1. releaseUtils.ts發(fā)布對象與模板版本同步scripts/releaseUtils.ts 定義了參與發(fā)布的三個包export const releasePackages [vite, create-vite, plugin-legacy] as const同文件的updateTemplateVersions()L6-L23會在發(fā)布create-vite時讀取 packages/vite/package.json 的版本號把它寫入packages/create-vite/template-*/package.json的devDependencies.vite形如^8.2.2并明確跳過 beta/alpha/rc 版本——這解釋了為什么 Changelog 中的正式版發(fā)布常伴隨模板依賴的版本對齊。2. prepare-release.ts生成 Changelog 與發(fā)布 PRscripts/prepare-release.ts 在 CI 中運行核心調(diào)用來自vitejs/release-scriptsconst { tag, version } await prepareRelease({ packages: releasePackages, pkg, release: process.argv[3], toTag: (pkg, version) getReleaseTag(pkg, version, vite), generateChangelog: async (pkg) { if (pkg create-vite) await updateTemplateVersions() await generateChangelog({ getPkgDir: () packages/${pkg}, tagPrefix: pkg vite ? undefined : ${pkg}, }) }, })兩個細(xì)節(jié)值得注意tag 命名規(guī)則vite 主包直接用vite前綴生成 tag如v8.2.2與 Changelog 標(biāo)題中的 compare 鏈接v8.2.1...v8.2.2完全吻合而create-vite、plugin-legacy則帶create-vite/plugin-legacy前綴——這是多包 monorepo 中 tag 隔離的常見做法PR 正文嵌入 Changelog腳本隨后用extractChangelogEntry({ changelogPath: packages/${pkg}/CHANGELOG.md, version })抽取剛生成的版本小節(jié)拼成## Changelog段落在帶__VITE_RELEASE_PR_BODY_EOF__分隔符的輸出中L35-L50供 Prepare Release workflow 創(chuàng)建發(fā)布 PR 時直接使用。腳本還強制要求GITHUB_SERVER_URL、GITHUB_REPOSITORY、GITHUB_RUN_ID三個環(huán)境變量L15-L18并會在 PR 描述中附上本次 Actions 運行鏈接。3. extract-changelog.ts按版本號抽取小節(jié)scripts/extract-changelog.ts 是獨立的小工具node scripts/extract-changelog.ts path version從指定 Changelog 中按版本號抽取對應(yīng)條目并輸出到 stdout——與 prepare-release 中抽取發(fā)布 PR 正文的用法一致也便于本地手動核對某個版本包含哪些提交。4. 條目格式的來源Changelog 中**scope:** description (#PR) (commit)的標(biāo)準(zhǔn)格式、小節(jié)歸類feat → Features、fix → Bug Fixes 等、以及small標(biāo)記 patch 版本的排版均由vitejs/release-scripts的generateChangelog統(tǒng)一生成這與 commit 采用 conventional commits 規(guī)范如feat(bundled-dev): ...、fix(css): ...直接對應(yīng)。文檔正文中 8.0.0、7.0.0、6.0.0 三個大版本條目內(nèi)嵌的公告文案與鏈接則是在自動生成的骨架上人工補充的發(fā)布公告內(nèi)容。七、升級實操如何用這份 Changelog 做版本決策判斷升級風(fēng)險先看小節(jié)層級patch 版本標(biāo)題帶small一般只有 Bug Fixes 與依賴升級可直接跟進minor/major 版本則必須逐條閱讀BREAKING CHANGES若存在與Features。按 scope 過濾與自身相關(guān)的條目升級前用 scope 關(guān)鍵詞自查例如使用 CSS 預(yù)處理器的項目重點看css/sass/lightningcss條目SSR 項目看ssr/module-runner多環(huán)境項目看environments/config。以 7.0 為例css: remove sass legacy API support (#19977)這類條目直接決定舊 sass 配置是否必須遷移。通過 PR 號回溯細(xì)節(jié)每條記錄都帶 PR 鏈接描述含糊時如remove import.meta.hot.accept resolution fallback應(yīng)回到 PR 查看討論與測試確認(rèn)自己的代碼是否命中該行為。關(guān)注deps類條目對工具鏈的間接影響如update rolldown to 1.1.2表明該版本內(nèi)建打包器行為可能隨 Rolldown 變化8.0 中update esbuild from ^0.25.0 to ^0.27.07.3.0 條目則提示 esbuild peer 依賴范圍已變化。beta 版本按需查閱如果項目使用了highly experimental full bundle mode8.0 引入的 bundled-dev等新能力應(yīng)額外閱讀 Beta Changelogs 中對應(yīng) tag 的歸檔記錄因為相關(guān)修復(fù)散落在 beta 周期內(nèi)。對照遷移文檔Changelog 大版本條目頭部都列有 Migration Guide 入口倉庫內(nèi)對應(yīng) docs/guide/migration.mdVite 8 的背景與實測數(shù)據(jù)可進一步參考 docs/blog/announcing-vite8.md。小結(jié)packages/vite/CHANGELOG.md 不僅是一份版本清單也是觀察 Vite 架構(gòu)演進的高質(zhì)量一手材料6.0 奠定了 Environment API7.0 收緊了 Node/模塊體系并切換 sass compiler API8.0 完成了 Rolldown 合并這一自 Vite 2 以來最大架構(gòu)變更8.1–8.2 則圍繞 chunk import map、頂層input、WASM ESM 集成與 bundled-dev 持續(xù)深化。其條目格式scope PR commit、小節(jié)分類與small版本標(biāo)記由 scripts/prepare-release.ts 驅(qū)動的發(fā)布流水線自動生成tag 命名與 scripts/releaseUtils.ts 中的三個發(fā)布包一一對應(yīng)。掌握這套格式規(guī)范后你可以在數(shù)分鐘內(nèi)從 2400 行的記錄中精準(zhǔn)定位與項目相關(guān)的變更完成一次有依據(jù)的 Vite 升級決策?!久赓M下載鏈接】viteNext generation frontend tooling. Its fast!項目地址: https://gitcode.com/GitHub_Trending/vi/vite創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考