Vue 團(tuán)隊(duì)又一重磅力作來(lái)了!
最近發(fā)現(xiàn)了 Vue 團(tuán)隊(duì)成員開(kāi)發(fā)的新打包工具——Tsdown。這是一個(gè)由 Rolldown 驅(qū)動(dòng)的快速打包工具,主要為 TypeScript 庫(kù)提供更快的打包方案。它和 tsup 功能類似,但借助 Rolldown 的性能優(yōu)勢(shì),同時(shí)支持 Rollup 和 Vite 插件。Tsdown 目前還在開(kāi)發(fā)中,還沒(méi)有準(zhǔn)備好用于生產(chǎn)環(huán)境。
Tsup 是基于 esbuild 的快速打包工具,專為需要快速迭代的 TypeScript 項(xiàng)目設(shè)計(jì),適用于庫(kù)開(kāi)發(fā)、工具腳手架或輕量級(jí)應(yīng)用打包。
Rolldown 和 Tsdown 的開(kāi)發(fā)目標(biāo)是逐步替換現(xiàn)有打包工具(如 Rollup 和 esbuild),提供更高效的構(gòu)建方案。
核心功能
? 速度快:Tsdown 基于用 Rust 開(kāi)發(fā)的 Rolldown,Rolldown 官方稱比 Rollup 快 10-30 倍,適合大型項(xiàng)目快速打包。
? 插件兼容:通過(guò) Rolldown 的 Rollup 兼容接口,支持 Rollup 和 Vite 插件,開(kāi)發(fā)者可以直接使用現(xiàn)有插件。
? TypeScript 優(yōu)化:開(kāi)箱即用,支持 CJS 和 ESM 格式。通過(guò) unplugin-isolated-decl(基于 Oxc)快速生成 .d.ts 類型文件。
? 依賴處理:能高效管理外部依賴和同級(jí)依賴,保持輸出包體積精簡(jiǎn)。
? 遷移方便:兼容 tsup 的命令行參數(shù),支持復(fù)用 Vite/Vitest 配置文件。
與其他工具對(duì)比
? 和 tsup 相比:Tsdown 使用 Rolldown 的 Rust 性能,速度可能更快,且支持更多插件。
? 和 esbuild 相比:在保持高速的同時(shí),彌補(bǔ)了 esbuild 插件生態(tài)不足的問(wèn)題。
? 和 Rollup 相比:保留了 Rollup 的插件系統(tǒng),但性能顯著提升。
里程碑
? 2024年6月:首次發(fā)布,實(shí)現(xiàn)與 tsup 功能對(duì)齊,支持 CJS/ESM 輸出和依賴優(yōu)化。
? 2025年4月:已經(jīng)整合到 Rolldown 生態(tài),未來(lái)將成為 Vite 遷移 Rolldown 后的技術(shù)基礎(chǔ)。
適用場(chǎng)景
? 為需要類型定義的庫(kù)/框架提供高效構(gòu)建
? 與 Rolldown、Vite 等工具鏈配合使用
小結(jié)
Tsdown 是基于 Rolldown 的高性能打包工具,整合了速度、兼容性和 TypeScript 支持的優(yōu)勢(shì)。雖然目前還不成熟,但它的潛力值得關(guān)注。當(dāng) Rolldown 和 Tsdown 進(jìn)一步完善后,可能會(huì)改變 JavaScript 和 TypeScript 的開(kāi)發(fā)工具格局,尤其是在 Vite 生態(tài)中。