mcpField
T
tsdown

tsdown

github.com/dobroslavradosavljevic开发339 次安装2 天前更新
代码仓库

关于 tsdown

面向使用 tsdown 构建 TypeScript 库的开发者工作流 Skill,涵盖构建、类型声明、导出、依赖和从 tsup 迁移。它侧重当前 API,并指导检查构建产物及包的实际使用。

主要功能

  1. 01构建配置与 CLI 指引
  2. 02类型声明和导出配置指引
  3. 03依赖打包控制
  4. 04插件、CSS 与工作区指导
  5. 05tsup 和版本迁移指引

适用场景

  1. 01配置 TypeScript 库构建
  2. 02检查生成的类型声明和导出
  3. 03调整依赖外部化方式
  4. 04将项目从 tsup 迁移

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dobroslavradosavljevic/skills --skill tsdown

安装后在 Claude Code 中输入/tsdown确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
references/
config-cli.md
dts-exports-deps.md
migrate-from-tsup.md
plugins-css-workspace.md
source-map.md
usage-guide.md

详细介绍

tsdown

当工作涉及 tsdown 时使用此技能:库构建、tsdown.config、dts/exports、依赖外置、watch/unbundle、CSS/插件/工作区、从 0.22 升级到 0.23,或从 tsup 迁移。

快照:[email protected](2026-10-01)。如果版本不同,请根据 source-map.md 刷新内容。

工作流

  1. 检查本地 tsdown 配置:
    • 包版本(优先使用 [email protected];此快照为 0.23.0)。运行此工具所需的 Node 版本:^22.18.0 || ^24.11.0 || >=26.0.0(0.23 中已不再支持 Node 25)。
    • 配置:tsdown.config.ts / package.json#tsdown;对等依赖(typescript、@tsdown/css、publint 等)。
    • package.json 中的 type、exports、types、engines.node(用于目标版本/dts 自动检测)。
    • 是否正在从 tsup 迁移(external、entryPoints、bundle: false 等)。
  2. 日常使用方法请先参考 usage-guide.md。
  3. 版本不一致时刷新文档。请从 source-map.md 开始。
  4. 按需查阅更深入的细节:
  5. 优先使用当前 API:entry、deps.neverBundle / alwaysBundle / onlyBundle、unbundle、copy、cjsDefault、dts.generator。将 CJS 视为维护模式;新库优先采用纯 ESM。
  6. 使用 bunx tsdown(或项目的 build)验证,检查 dist 和 exports/types,然后通过 smoke import 使用该包。

核心判断

  • tsdown 是基于 Rolldown + Oxc 的库打包器,是 tsup 的精神继承者,而非应用打包器。
  • 默认值与 tsup 不同:format: 'esm'、clean: true;dts 通常根据 package.json 的 types/exports 自动检测;target 根据 engines.node 确定。
  • 优先使用 deps.neverBundle / alwaysBundle,而非已弃用的 external / noExternal(0.23 中仍接受这些选项;同时设置两种形式会报错)。
  • 0.23 移除了与 tsup 兼容的选项(bundle、outExtension、publicDir、removeNodeProtocol、injectStyle、inlineOnly、skipNodeModulesBundle、deps.onlyAllowBundle、dts.cjsReexport);这些选项会导致类型检查失败,并在运行时被忽略。
  • 默认依赖策略:包的 dependencies/peers 会被外置;已使用的 devDependencies 可能会被打包——行为不符合预期时,使用 deps 覆盖。
  • 生成 dts 需要安装 typescript。仅通过 dts.generator: 'oxc' | 'tsc' | 'tsgo' 选择生成器(省略时:若启用了 isolatedDeclarations,则使用 oxc;若安装了 TypeScript 7,则使用 tsgo;否则使用 tsc)。dts.oxc: true / dts.tsgo: true 不再用于选择生成器。
  • 0.23 中 deps.resolveDepSubpath 默认值为 false——外置子路径会保持原样。
  • build() 会返回一个句柄:const { bundles, watch } = await build(...)。
  • 使用 @tsdown/css / @tsdown/exe 时,其版本必须与 tsdown 一致。
  • 不支持 stub 模式——请使用 --watch 和/或 exports.devExports。
  • 代码拆分始终开启——没有 splitting: false。
  • 从 0.22 或 tsup 升级:先在 0.22.14 上构建一次,确保没有弃用警告,然后升级到 0.23(tsdown-migrate 在第一阶段会固定使用 0.22.14)。
  • 命令示例优先使用 bun / bunx。

验证

优先使用仓库自有的命令。对于有意义的 tsdown 工作,覆盖相关子集:

  • 运行 bunx tsdown --version,并确认 CLI 的 Node 引擎要求。
  • 干净构建:运行 bunx tsdown / bun run build;检查 dist 中的格式和扩展名(.mjs/.cjs/.js)。
  • 类型:从依赖包中使用 .d.ts / exports.types,或运行 tsc。
  • 双格式:当 format 同时包含两种格式时,执行 require + import 冒烟测试。
  • 使用 exports: true 后:如果已启用,通过 publint/attw 验证 package.json。
  • 迁移:升级到 0.23 前,确保 0.22.14 没有弃用警告;升级后,不再有已移除的选项,且 attw 仍能通过(默认配置现在为 esm-only)。

说明运行了哪些检查、未运行哪些检查,以及仍存在哪些版本假设。

评论

支持 Markdown