尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

tsup零配置魔法揭秘:为什么一行命令就能打包你的TypeScript库

tsup零配置魔法揭秘:为什么一行命令就能打包你的TypeScript库 tsup零配置魔法揭秘为什么一行命令就能打包你的TypeScript库【免费下载链接】tsupThe simplest and fastest way to bundle your TypeScript libraries.项目地址: https://gitcode.com/gh_mirrors/ts/tsuptsup是一个由 esbuild 驱动的 TypeScript 库打包工具号称最简单、最快速的库构建方案——安装后只需一行tsup src/index.ts无需任何配置文件就能同时产出 ESM、CJS 两种格式、并自动生成类型声明。本文为你揭秘它零配置背后的默认值设计与依赖外置策略。30秒上手一行命令发生了什么安装后直接运行npm i tsup -D tsup src/index.ts此时 tsup 已经悄悄替你做了这些决定决策项默认行为源码位置输出目录dist/src/index.ts打包格式esmcjs双格式src/utils.ts编译目标node16src/options.ts目标平台nodesrc/options.ts代码分割ESM 默认开启、CJS 默认关闭src/options.ts也就是说零配置不是魔法而是一整套经过深思熟虑的默认值。依赖外置tsup 最关键的默认策略打一个 npm 库时你肯定不希望把package.json里声明的依赖打进产物——用户安装时会重复安装还可能引发依赖副本冲突。tsup 的解法是自动外置dependencies和peerDependencies中的包一律不打包保持为import语句。外置/打包的判定逻辑在 src/esbuild/external.ts 中实现优先级如下结合图示判定顺序为命中noExternal强制打包名单→ 打包例如 monorepo 里的本地包未命中 → 查external强制外置名单→ 命中则外置都没命中 → 默认策略生效package.json的dependencies/peerDependencies自动外置。还有一个更省心的快捷方式tsup-node命令会自动跳过所有 Node.js 包的打包适合构建 Node 应用而非库的场景详见 src/cli-node.ts。配置文件从零到全的自由度零配置只是起点。当你想自定义时tsup 支持这几种配置方式优先级从高到低见 docs/README.mdtsup.config.ts/tsup.config.js/tsup.config.cjs/tsup.config.jsonpackage.json中的tsup字段仓库本身就是自己的使用示例可参考 tsup.config.ts。所有可选参数entry、dts、minify、treeshake等 40 余项的类型定义在 src/options.ts而 JSON 配置的用户还能通过 schema.json 在编辑器中获得自动补全与校验。一个常见的进阶组合tsup src/index.ts --dts --sourcemap--dts额外生成index.d.ts类型声明--sourcemap生成.map调试文件——依然是命令行搞定无需碰配置文件。幕后功臣为什么这么快tsup 的快来自两层设计底层 esbuild核心解析与打包由 Rust 编写的 esbuild按需叠加 Rollup仅当你开启treeshake等选项时才会在 esbuild 之后追加 Rollup 做二次树摇进一步压缩体积而不是让 Rollup 全程参与。此外src/plugins/ 目录下的各个小插件各司其职cjs-interop.ts处理 ESM/CJS 互操作、tree-shaking.ts做二次树摇、terser.ts负责深度压缩、size-reporter.ts输出产物体积报告。总结零配置的正确打开方式零配置 ≠ 没配置而是默认值覆盖了 90% 场景dist输出、esmcjs双格式、依赖自动外置依赖外置规则遵循noExternal external package.json 依赖的优先级src/esbuild/external.ts 是其核心实现需要微调时优先用 CLI 参数再考虑 tsup.config.ts 配置文件追求极致体积时可叠加--treeshake与minify: terser。理解这些默认值之后你就能把 tsup 当作懂 TypeScript 库发布惯例的打包器放心使用了。【免费下载链接】tsupThe simplest and fastest way to bundle your TypeScript libraries.项目地址: https://gitcode.com/gh_mirrors/ts/tsup创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表