TSDX 2.0.0 发布解析:基于 Rust 工具链的零配置 TypeScript 包开发 CLI 重写
开发工具CLI构建工具【免费下载链接】tsdxZero-config CLI for TypeScript package development项目地址https://gitcode.com/gh_mirrors/ts/tsdx点击查看免费下载TSDX 2.0.0 是一次从零开始complete rewrite的大版本发布将原本基于 Rollup、Jest、ESLint、Prettier 的旧工具链整体替换为以 bunchee、vitest、oxlint、oxfmt 为核心的现代高性能工具栈。本文以 CHANGELOG.md 的 2.0.0 发布说明为主线结合 CLI 源码、基础模板、React 模板 与测试用例系统拆解这次重写的技术内涵新工具栈各司其职的分工、七个 CLI 命令的底层实现、双模板脚手架结构与双格式产物机制。读完本文你将理解 TSDX 2.0 的架构全貌并能在自己的 TypeScript 包开发中直接使用这套零配置工作流。一、2.0.0 是一次彻底重写而非增量升级CHANGELOG 对 2.0.0 的定性非常明确Initial 2.0.0 release - complete rewrite with modern Rust-based tooling首个 2.0.0 版本——基于现代 Rust 工具链的完整重写。这意味着它不是对 v0.x 的修补而是把零配置这件事换了一整套实现底座。重写带来的核心变化清单对应 CHANGELOG.mdBundling with bunchee打包从 Rollup 配置体系切换为 bunchee基于 Rollup SWC零配置输出多格式。Testing with vitest测试框架从 Jest 切换为 vitestVite 原生兼容 Jest API。Linting with oxlint代码检查从 ESLint 切换为 oxlintRust 实现OXC 生态。Formatting with oxfmt格式化从 Prettier 切换为 oxfmt同样由 Rust 实现。Project scaffolding with basic and react templates项目脚手架提供basic基础 TS 库与reactReact 组件库两个模板。从仓库根目录 package.json 的 devDependencies 可以印证这一重写bunchee ^6.4.0、oxlint ^0.16.0、vitest ^2.1.8、typescript ^5.7.2构成了新工具链而engines.node 20表明它要求现代 Node.js 运行时。README 中强调oxlint 比 ESLint 快约 50–100 倍、oxfmt 比 Prettier 快约 35 倍这些为项目官方声明的相对性能指标实际收益取决于具体项目规模。二、新工具栈的分工谁负责什么TSDX 2.0 的工具栈可以归纳为一个运行时、四个质量工具工具职责在 TSDX 2.0 中的角色bun包管理与脚本运行安装依赖、执行脚本bun install、bun runbunchee打包器生成 ESM/CJS 双格式产物与 .d.ts 声明文件vitest测试框架运行单元/组件测试支持 watch、coverage、快照更新oxlintLinter静态检查 src 与 test 目录oxfmtFormatter格式化代码支持 --check 校验模式tsc类型检查以--noEmit模式做纯类型校验这种组合的关键收益是零配置bunchee 从package.json的 exports/main/module/types 字段推导构建行为vitest 从vitest.config.ts读取测试配置oxlint/oxfmt 各自内置合理默认规则——开发者的心智负担被降到最低。在 CLI 源码 中可以看到tsdx 自身是一个用 commander 编写的 Node CLI它内部通过execa/execaCommand转发给这些底层工具tsdx build→ 执行buncheetsdx dev→ 执行bunchee --watchtsdx test→ 执行bunx vitest [run]tsdx lint→ 执行bunx oxlint [paths]tsdx format→ 执行bunx oxfmt --write/--check [paths]tsdx typecheck→ 执行bunx tsc --noEmit。也就是说tsdx 是一个薄封装层把不同工具的调用约定统一成一套tsdx command语义这正是零配置 CLI的架构本质。三、CLI 命令体系逐条解析含源码证据TSDX 2.0 提供 7 个命令create、build、dev、test、lint、format、typecheck、init。下面结合 src/index.ts 的实现逐一说明。3.1 create脚手架生成bunx tsdx create mylib # 交互式选择模板 bunx tsdx create mylib --template react # 直接指定 react 模板源码中的实现要点src/index.ts目标目录已存在时直接报错退出Error: Directory xxx already exists未指定--template时用 Enquirer 的Select弹窗列出basic - A basic TypeScript library与react - A React component library两个选项将templates/name整目录复制到目标路径把模板里的gitignore重命名为.gitignore优先从git config --global user.name读取作者名读不到则交互询问将生成的package.json中的name、author字段替换为实际值将LICENSE中的year、author占位符替换为当前年份与作者最后在项目内执行bun install安装依赖。CLI 测试 test/cli.test.ts 验证了--help输出包含 Zero-config TypeScript package development 及 create/build/dev/test/lint/format 等命令名--version输出符合\d\.\d\.\d格式可作为行为基准。3.2 build零配置双格式构建tsdx build # 默认先清理 dist tsdx build --no-clean实现逻辑src/index.ts默认先fs.remove(dist)清理输出目录再执行bunchee。bunchee 会依据package.json的 exports 字段自动产出dist/index.js—— ESMdist/index.cjs—— CommonJSdist/index.d.ts/dist/index.d.cts—— 对应格式的类型声明。3.3 dev / watch监听式开发tsdx devdev是watch的别名commander 的.alias(watch)底层执行bunchee --watchsrc/index.ts源码变更时自动增量重建。3.4 testvitest 封装tsdx test # 单次运行等价 vitest run tsdx test --watch # 监听模式 tsdx test --coverage # 覆盖率 tsdx test --update # 更新快照 tsdx test -- extra vitest args # 透传额外参数实现上src/index.ts未传--watch时向 vitest 追加run参数--coverage追加--coverage--update追加--update其余未知参数通过allowUnknownOption(true)与command.args透传给 vitest。测试失败时以 vitest 的退出码原样退出进程。3.5 lintoxlint 封装tsdx lint # 默认检查 src test仅检查存在的路径 tsdx lint src lib # 指定路径 tsdx lint --fix # 自动修复 tsdx lint --config .oxlintrc.json # 指定配置文件实现上src/index.ts有个值得注意的细节默认路径是[src, test]但会先过滤掉不存在的目录若全部不存在则提示 No valid paths to lint 并直接返回避免对空目录误报。3.6 formatoxfmt 封装tsdx format # 默认格式化整个项目路径为 . tsdx format --check # 仅校验不修改 tsdx format src test # 指定路径实现上src/index.ts--check时追加--check参数否则追加--write执行格式化写入。3.7 typecheck纯类型检查tsdx typecheck # tsc --noEmit tsdx typecheck --watch # 追加 --watch实现上src/index.ts直接调用bunx tsc --noEmit构建产物与类型检查彻底分离——类型检查不产出文件只做校验。3.8 init为存量项目注入 tsdx 配置bunx tsdx init这是本次重写为存量项目准备的命令src/index.ts它会在当前目录的package.json中写入exports、main: ./dist/index.cjs、module: ./dist/index.js、types: ./dist/index.d.ts、type: module写入 scriptsdev: bunchee --watch、build: bunchee、test: vitest run、test:watch: vitest、lint: oxlint、format: oxfmt --write .、format:check: oxfmt --check .、typecheck: tsc --noEmit若缺少tsconfig.json则按模板创建target ES2022、module ESNext、moduleResolution bundler、strict true 等若缺少vitest.config.ts则创建默认配置globals、environment: node。四、双模板脚手架basic 与 react 的差异CHANGELOG 明确列出了 Project scaffolding with basic and react templates。两个模板共享同一套零配置理念差异集中在测试环境与依赖上。4.1 basic 模板纯 TypeScript 库目录结构对应 templates/basicmylib/ ├── src/index.ts # 库入口 ├── test/index.test.ts # vitest 测试 ├── package.json ├── tsconfig.json ├── vitest.config.ts ├── LICENSE ├── README.md └── .gitignore入口示例templates/basic/src/index.ts是一个带 JSDoc 的sum函数测试配置templates/basic/vitest.config.tsenvironment: nodeinclude: [test/**/*.test.ts]tsconfig.jsontemplates/basic/tsconfig.json开启了strict、declaration、declarationMap、noUnusedLocals、noUnusedParameters、noFallthroughCasesInSwitch、noImplicitReturns等严格检查outDir: ./dist、rootDir: ./src、noEmit: truepackage.jsontemplates/basic/package.json的 scripts 全部以tsdx cmd形式组织prepublishOnly: bun run build保证发布前自动构建devDependencies 只需tsdx、typescript、types/node。4.2 react 模板React 组件库在 basic 基础上增加对应 templates/reactmylib/ ├── src/index.tsx # React 组件入口 ├── test/index.test.tsx # Testing Library 测试 ├── example/ # Vite 驱动的演示应用 │ ├── index.tsx │ ├── index.html │ ├── package.json │ └── vite.config.ts └── ...入口示例templates/react/src/index.tsx是带ThingProps接口的Thing组件测试配置templates/react/vitest.config.ts将environment切换为jsdominclude扩展为test/**/*.test.{ts,tsx}devDependencies 引入testing-library/react、jsdom、react、react-dom及对应类型包peerDependencies 声明react 18、react-dom 18把 React 留给使用方安装。example/目录是可独立运行的演示应用方便开发者在真实宿主环境中验证组件行为。五、产物与导出ESM/CJS 双格式与类型声明TSDX 2.0 的构建产物设计README 与模板 package.json 双重印证文件格式用途dist/index.jsESM现代打包器、type: module的 Node.jsdist/index.cjsCommonJS传统 Node.js、旧打包器dist/index.d.tsTypeScriptimport 场景的类型定义dist/index.d.ctsTypeScriptrequire 场景的类型定义模板 package.json 中的完整 exports 结构以 templates/basic/package.json 为例{ type: module, main: ./dist/index.cjs, module: ./dist/index.js, types: ./dist/index.d.ts, exports: { .: { import: { types: ./dist/index.d.ts, default: ./dist/index.js }, require: { types: ./dist/index.d.cts, default: ./dist/index.cjs } }, ./package.json: ./package.json } }这一结构由 bunchee 自动消费开发者无需手写任何 Rollup 配置只要tsdx build即可同时产出两种模块格式与配套声明文件实现一处源码、处处可用的发布形态。六、从 v0.x 迁移重写带来的兼容性边界README 明确指出构建产物的格式与 v0.x 完全兼容库的消费者不会感知任何差异但开发工作流与配置体系不同。迁移的核心步骤安装 bun更新package.jsonscripts 使用 tsdx 命令用 vitest 替换 Jest测试文件迁移、配置迁移用 oxlint 替换 ESLint可选用 oxfmt 替换 Prettier可选重新bun install。仓库中的 MIGRATION.md 提供了详细迁移指南。此外tsdx init命令本身就是为存量项目准备的自动迁移工具——它会一次性补齐 exports、scripts、tsconfig、vitest 配置大幅降低升级成本。七、环境要求与快速上手TSDX 2.0 的环境前提Node.js 20LTS见 package.json 的engines.nodeBun最新版本负责包管理与脚本执行。安装与创建项目的完整路径# 全局安装推荐用于创建项目 bun add -g tsdx # 或按项目安装 bun add -D tsdx # 创建并进入项目 bunx tsdx create mylib cd mylib # 开始开发 bun run dev创建完成后src/index.ts即为库入口编辑保存后bunchee --watch会自动重建。发布流程则是bun run build后npm publishREADME 建议配合 np 或 changesets 使用仓库根目录的release: bun run build changeset publish脚本即体现了这一实践。结语TSDX 2.0.0 的发布说明虽短背后却是整套工程链路的重新设计以 bun 为运行时底座bunchee/vitest/oxlint/oxfmt 各司其职tsdx CLI 作为统一入口把零配置体验贯彻到脚手架、构建、测试、检查、格式化、类型校验与迁移的全流程。如果你正在寻找一条现代、快速、免配置的 TypeScript 库开发路径或正在规划存量 tsdx 项目的升级这套以 Rust 工具链为核心的重写版本值得直接上手。赞分享开发工具CLI构建工具【免费下载链接】tsdxZero-config CLI for TypeScript package development项目地址https://gitcode.com/gh_mirrors/ts/tsdx点击查看免费下载相关推荐3步实现零配置TypeScript包开发TSDX渐进式指南3步实现零配置TypeScript包开发TSDX渐进式指南 你是否还在为TypeScript包开发中的配置地狱而烦恼从Rollup打包配置到Jest测试环境开发工具CLI构建工具TypeScript开发终极指南TSDX零配置工具从入门到精通TypeScript开发终极指南TSDX零配置工具从入门到精通 TSDX是一款面向TypeScript包开发的零配置CLI工具它能够帮助开发者快速搭建Typ开发工具CLI构建工具终极指南OpenCode AI编程助手 - 免费开源智能编程伙伴的完整使用教程终极指南OpenCode AI编程助手 免费开源智能编程伙伴的完整使用教程 OpenCode是一款功能强大的开源AI编程助手它能直接在终端环境中为你提供智能人工智能AI 应用AI Agent代码智能体CLI开发者工具上一篇Terratest测试数据管理如何有效处理测试环境数据下一篇终极指南Bedrock-Samples中的Molang语言应用技巧创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Deployer Rsync Recipe 实战指南:用 rsync 替代 git 完成代码推送与远端热备

Deployer Rsync Recipe 实战指南:用 rsync 替代 git 完成代码推送与远端热备

DevOpsCI/CDCLI开发工具运维 【免费下载链接】deployer The PHP deployment tool with support for popular frameworks out of the box 项目地址: https://gitcode.com/gh_mirrors/de/deployer 点击查看 免费下载 本指南围绕 Deployer 官方 contrib 配方 contrib/…

2026/9/23 17:04:08 阅读更多 →
搞定vc含量高的水果数据清洗与源码解析,别再被报错逼疯

搞定vc含量高的水果数据清洗与源码解析,别再被报错逼疯

搞定vc含量高的水果数据清洗与源码解析,别再被报错逼疯 刚跑完那个 vc含量高的水果 数据处理脚本,终端里直接炸出一坨红色的 KeyError 和 IndexError…

2026/9/23 17:03:07 阅读更多 →
3步搞定天翼企业云盘开发:保姆级教程拆解底层逻辑

3步搞定天翼企业云盘开发:保姆级教程拆解底层逻辑

3步搞定天翼企业云盘开发:保姆级教程拆解底层逻辑 很多开发者对着天翼企业云盘(Weiyun)的 API 文档发呆,觉得接口文档写得像天书,或者干脆直接调用示例代码,一旦业务逻辑稍微复杂点,比如文件并发上传、断点续传,代码就崩了。这就是典型的…

2026/9/23 17:03:07 阅读更多 →

最新新闻

3天吃透步步为营:这份源码速查手册让你告别官方文档焦虑

3天吃透步步为营:这份源码速查手册让你告别官方文档焦虑

3天吃透步步为营:这份源码速查手册让你告别官方文档焦虑 官方文档动辄几千页,翻到第三页就忘第一页,重点全在脚注里?别慌,咱们不啃砖头书,直接上 步步为营 的源码速查手册。…

2026/9/23 18:18:36 阅读更多 →
BP神经网络入侵检测的数据挖掘实战:特征清洗与降维优化

BP神经网络入侵检测的数据挖掘实战:特征清洗与降维优化

简介:本资源是一份面向高校信息安全、数据挖掘与机器学习方向研究者的BP神经网络入侵检测实践项目,聚焦于利用数据挖掘技术提升IDS对异常流量的自动识别能力。资源包含92个文件,以79个MATLAB源码(.m)为核心&#xff0c…

2026/9/23 18:18:36 阅读更多 →
爱立信4G/5G Moshell排障指令实战地图

爱立信4G/5G Moshell排障指令实战地图

简介:本资源是一份面向通信网络运维工程师、爱立信设备初/中级维护人员的4G/5G指令速查手册,聚焦实际网管操作场景,系统梳理Moshell环境下高频使用的九类核心指令及其典型应用。内容涵盖MOM对象管理、MO-read/mo-write参数读写、PM性能采集、…

2026/9/23 18:18:36 阅读更多 →
Yii 2 视图(Views)完全指南:模板创建、渲染机制与布局系统实战

Yii 2 视图(Views)完全指南:模板创建、渲染机制与布局系统实战

后端Web框架 【免费下载链接】yii2 Yii 2: The Fast, Secure and Professional PHP Framework 项目地址: https://gitcode.com/gh_mirrors/yi/yii2 点击查看 免费下载 视图(View)是 Yii 2 MVC 架构中的表现层,负责把模型数据以 H…

2026/9/23 18:18:36 阅读更多 →
面部表情识别系统落地避坑指南:数据、模型与部署三重耦合

面部表情识别系统落地避坑指南:数据、模型与部署三重耦合

简介:本资源是一个面向高校课程设计与计算机视觉初学者的Python面部表情识别分析系统,聚焦于高兴与沮丧两类情绪的二分类识别任务,适用于人工智能入门实践、图像处理课程实训及深度学习项目复现。压缩包共16个文件,含10个核心Pyth…

2026/9/23 18:18:35 阅读更多 →
飞地算法面试避坑:3个核心考点搞定80%追问

飞地算法面试避坑:3个核心考点搞定80%追问

飞地算法面试避坑:3个核心考点搞定80%追问 很多初学者卡在“飞地”这个概念上,明明背下了“陆地被水包围”的定义,一到白板手写代码就懵圈。其实这题考的不是你懂不懂语法,而是你能不能把抽象的地理概念翻译成具体的图论遍历逻辑。我在CSDN后台看…

2026/9/23 18:17:35 阅读更多 →

日新闻

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A…

2026/9/23 0:00:23 阅读更多 →
2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我 刚把开发环境的显示器从1080P换到2K,跑老项目直接报错,版本升级后 API…

2026/9/23 0:01:25 阅读更多 →
3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点 官方文档翻了三遍还是云里雾里?别急,美眉图在实战项目中常被用来做数据可视化,但它的原理比你想的简单。今天咱们直接上手,用一个完整的小项目把美眉图跑通,不再死磕那些冗长的理论说明。…

2026/9/23 0:01:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →