ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

TSDX 2.0.0 发布解析:基于 Rust 工具链的零配置 TypeScript 包开发 CLI 重写

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),仅供参考
返回列表