tsdown:超快的打包器与类型声明生成工具

你有没有遇到这种情况?项目越做越大,构建越来越慢,生成类型声明文件还总是各种报错,搞得人抓狂。之前我也试过tsup、rollup那些工具,虽然都挺好用,但总觉得速度不够快,配置也容易乱七八糟。直到我试了tsdown,真的有点让我眼前一亮,尤其是它生成.d.ts
文件的速度,简直像开了挂一样。
说白了,tsdown就是一个超快的打包器,重点是它还能同时生成类型声明文件,关键速度还特别快!它背后的功臣有两个:一个是 Rolldown,一个是 Oxc。前者是个兼容 Rollup 的构建器,速度特别快;后者是一个用 Rust 写的 TypeScript 编译器,专门搞 .d.ts
这类文件的生成,性能杠杠的。两者合体,直接飞起!
而且吧,它不是只图快,还特别“贴心”——比如你原来用的是 tsup,它就可以直接兼容你的那些配置。像我之前一个项目就是用 tsup,换成 tsdown 几乎没怎么改配置,过渡就像没事人一样,非常丝滑。
这玩意儿对 Vite 和 Vitest 的支持也很“香”!你只要项目里已经用了 Vite 或者 Vitest,那些配置都可以直接复用,没必要再重新搞一份出来,省事儿不少。对于我们这种讨厌重复劳动的人来说,这点真的很重要。
还有插件生态的问题,其实我原来也担心,万一用不了 Rollup 的插件那可咋办。结果发现人家支持 Rollup / Rolldown / Vite / unplugin 的插件体系,不光能用,甚至比很多工具支持得更广。举个例子,比如我项目里用了 @rollup/plugin-alias
来搞路径映射,tsdown 下也完全没问题,直接照抄原来的配置用。
然后我自己用的时候是这样操作的:
bashnpm install tsdown --save-dev
接着我新建了一个配置文件 tsdown.config.ts
,长这样:
ts
import { defineConfig } from 'tsdown'
export default defineConfig({
entry: './src/index.ts',
format: ['esm', 'cjs'],
dts: true,
target: 'esnext',
})
没错,配置就是这么简单,该有的功能都有,不该你管的它都默认搞定。你执行一下构建命令:
bashnpx tsdown
基本上几秒钟,所有文件就构建好了,还顺带给你把 .d.ts
文件也扔到 dist
目录下,非常干脆。
对了,如果你是从 tsup 过来的,那你几乎不用改动啥。tsdown 的设计思路就跟 tsup 非常像,甚至大多数配置项名都一样,迁移起来非常轻松。
我感觉嘛,tsdown的最大优点就是省心+快。你不用担心插件不兼容,不用担心生成 .d.ts
太慢,不用重新配置一堆东西。只要你项目稍微大一点,或者在意类型声明生成速度,tsdown真的值得你试试看。
最后嘛,我自己的使用体验是:tsdown让构建流程轻了不少,也让我心情轻松不少。你说一个构建工具,能做到快、稳、省配置,这三点同时满足,就已经值得给它点个赞了。而且现在社区也挺活跃,后续应该会越来越好用吧。所以如果你还在用 tsup 或 Rollup 打包,真心推荐你试试 tsdown,搞不好你也会有种“啊这不就对了”的感觉~