用途:tsdown 是构建在 Rolldown(Rust 实现)之上的库打包器,为 TypeScript 与 JavaScript 库提供开箱即用的构建方案,适合打包发布到 npm 的 TypeScript 库、生成声明文件、产出 ESM/CJS 双格式包、打包 CLI 工具、以 watch 模式开发库,以及从 tsup 迁移。不适合应用打包(应直接用 Vite/Rolldown)、服务端渲染框架、需要 Webpack 专有特性的项目,以及无需打包的简单脚本。
主要能力:处理源码转换;输出 ESM、CJS、IIFE、UMD 多种格式;生成 TypeScript 声明文件;生成 package.json 的 exports 字段;默认将 node_modules 依赖视为 external;支持 noExternal 强制打包指定依赖;可设置 target(如 node18)、platform(node/browser/neutral)、minify、treeshake、sourcemap、clean、banner/footer、nodeProtocol、onSuccess 钩子;支持多配置与动态配置;提供编程式 API(import { build });支持 --watch、--publint、--attw、--report 等命令行能力。
使用方式:可直接运行 npx tsdown(自动探测 src/index.ts 入口),或使用 tsdown.config.ts 配合 defineConfig() 获得类型安全;entry 支持字符串、数组或对象命名入口;format 传数组如 ['esm','cjs'];dts: true 会依据 package.json 的 types 字段自动探测;同时发布 ESM 与 CJS 时建议 fixedExtension: true 以强制 .mjs/.cjs 与 .d.mts/.d.cts。
限制与注意:使用 dts: true 需存在配置正确的 tsconfig.json;package.json 需有 types 或 exports 的 types 条件以便声明解析;target 不应低于实际支持的最低 Node/浏览器版本;更改格式后应使用 clean: true 避免残留旧文件;CI 中应使用配置文件或非交互式参数;Node 内置模块在 platform: 'node' 下会自动 external。资料未提供收费、价格与具体平台支持细节。