【翻译】面向开发者与 AI 的极速前端工程化工具链

3 阅读9分钟

原文链接:Fastest Frontend Tooling for Humans & AI

作者:Christoph Nakazawa

2026 年,JavaScript 工程化工具迎来全面提速。TypeScript 正基于 Go 语言重写OxlintOxfmt 这类工具也已准备好大规模落地使用。无论是开发者,还是大语言模型,在拥有快速反馈循环、严格的约束规范、强本地推理能力的代码库中,开发与编码效率都会得到质的提升。本文旨在通过一套合理且严格的默认配置,帮助所有开发者大幅提升开发效率。(补充:如果你对此仍有疑虑,本文介绍的技术栈正是 OpenClaw 团队实现火箭级开发交付速度的核心方案 —— 这套方案正是由我主导搭建的。)

如果你懒得读完整篇文章,也可以观看我的构建可扩展应用主题演讲,或将本文直接发给你的大语言模型参考,亦或是直接基于以下模板快速起步:

以下为你详解如何让你的技术栈实现速度飞升:

tsgo:基于 Go 语言重构的 TypeScript

过去六个月,我一直在使用这款 Go 语言重构的 TypeScript,类型检查速度提升了约 10 倍。尽管开发初期遇到过一些小问题,但目前该工具已基本稳定,功能也趋于完善,甚至还支持了编辑器集成。

我当初切换到这款实验性的 TypeScript 版本时,最担心的是类型检查的行为出现回归问题。但实际使用后发现,情况恰恰相反:tsgo 能捕获到原版 JavaScript 实现的 TypeScript 未能发现的类型错误!我已在 20 多个项目中落地了 tsgo,这些项目的代码量从 1000 行到 100 万行不等,而 tsgo 确实让项目的迭代效率得到了大幅提升。

如果你正打算迁移至 tsgo,且当前项目仍在使用原生 TypeScript 编译代码,我建议先做如下适配:类库开发项目切换为 tsdown 构建,Web 应用项目则使用 Vite。其中 tsdown 是一款基于 Rolldown 打造的高性能类库打包工具,可对 JavaScript 打包产物做深度优化。

完成上述适配后,即可快速迁移至 tsgo,步骤如下:

  • npm install @typescript/native-preview
  • 移除所有老旧的 TypeScript 配置标识
  • 将项目中所有调用tsc的地方替换为tsgo
  • 在 VS Code 配置中添加:"typescript.experimental.useTsgo": true

用 Oxfmt 替代 Prettier

从 Prettier 还处于内测阶段时,我就一直在使用它。尽管此后出现了许多代码格式化工具,但没有一款能在功能覆盖度和插件生态上与 Prettier 匹敌。而 Oxfmt 是一款绝佳的替代方案,它内置了 Prettier 的多款核心插件例如导入语句排序、Tailwind CSS 类名排序,对于 JavaScript/TypeScript 之外的其他小众语言,还能自动降级使用 Prettier 进行格式化。

迁移提示词

将本项目从 Prettier 迁移至 Oxfmt,参考文档:oxc.rs/docs/guide/…。更新项目中所有相关脚本、工具和钩子,改为使用 Oxfmt;移除所有 Prettier 配置文件,并使用 Oxfmt 重新格式化整个项目的代码。

推荐通过以下命令安装 Oxc 的 VS Code 扩展

code --install-extension oxc.oxc-vscode

用 Oxlint 替代 ESLint

与 Prettier 的情况类似,业界也曾出现过许多新的代码检查工具,但 ESLint 的插件生态始终难以被超越。即便是我此前使用过某款基于 Rust 开发的检查工具,最终还是不得不保留 ESLint,只为了使用 React Compiler 这类专属插件。

而 Oxlint 是首款能通过 ESLint 插件垫片和 NAPI-RS 直接运行 ESLint 插件的新一代代码检查工具。同时 Oxlint 还支持 TypeScript 配置文件,你可以通过extends关键字组合自定义配置:

import nkzw from '@nkzw/oxlint-config';
import { defineConfig } from 'oxlint';

export default defineConfig({
  extends: [nkzw],
});

迁移提示词

将本项目从 ESLint 迁移至 Oxlint,参考文档:oxc.rs/docs/guide/…。更新项目中所有相关脚本、工具和钩子,改为使用 Oxlint;移除所有 ESLint 配置文件,对项目代码执行检查并修复所有发现的代码检查错误。

Oxlint 还支持基于类型信息的代码检查规则,只需在安装 Oxlint 的同时安装oxlint-tsgolint,并执行以下命令即可启用:

oxlint --type-aware

甚至你还能借助 TypeScript Go 的能力,通过以下命令直接执行类型检查:

oxlint --type-aware --type-check

@nkzw/oxlint-config 配置集

几周前,我让 GPT 5.2 Codex 在一个空的 Git 仓库中,将某一代码库从一款 UI 框架迁移至另一款。随后我给了它本文的 Web 应用模板,让它在新的会话中完成同样的迁移工作。结果显示,在这套严格的约束规范下,它完成的迁移工作质量显著更高,出现的 Bug 也更少。

如果你并非基于上述模板从零开始搭建项目,也可以直接使用@nkzw/oxlint-config—— 它能为你提供开箱即用、高速、严格且全面的代码检查体验,并通过以下设计原则,引导大语言模型写出更优质的代码:

  • 报错无警告:警告信息属于无效干扰,往往会被开发者忽略。代码要么存在问题(直接报错),要么完全合规(无任何提示)。该配置会强制开发者修复问题,或通过注释显式禁用相关规则。
  • 严格且一致的代码风格:当某一功能有多种实现方式时,该配置会强制执行最严格、最一致的代码风格,同时优先采用现代语言特性和行业最佳实践。
  • 从根源规避 Bug:禁止使用instanceof这类存在问题的编码模式,强制开发者选择更健壮的实现方式;同时禁用console.logtest.only这类仅调试场景使用的代码,避免生产环境出现意外的日志输出,或导致持续集成(CI)流程意外失败。
  • 极致性能:规避所有低性能的检查规则,例如优先使用 TypeScript 原生的noUnusedLocals检查,而非 ESLint 的no-unused-vars
  • 无侵入式设计禁用所有主观化、过度个性化的规则(例如纯风格偏好类规则);优先选择支持自动修复的规则,减少开发摩擦,节省开发时间。

我认为@nkzw/oxlint-config是首个为 Oxlint 整合了全套严格的原生规则和 JavaScript 插件的配置包,强烈建议你尝试使用!

迁移提示词

基于@nkzw/oxlint-config将本项目从 ESLint 迁移至 Oxlint,参考文档:raw.githubusercontent.com/nkzw-tech/o… 以及 oxc.rs/docs/guide/…。更新项目中所有相关脚本、工具和钩子,改为使用 Oxlint;移除所有 ESLint 配置文件。

更精细化的开发者体验优化

npm-run-all2

我至今仍偏爱使用npm-run-all2(注意:这里的 2 不是笔误!它是 npm-run-all 的一款现代轻量分支版本)。虽然该工具的二进制命令仍为npm-run-all,容易造成混淆,但它能极其高效地并行执行脚本,让本地开发的构建速度大幅提升:

"scripts": {
  "lint:format": "oxfmt --check",
  "lint": "oxlint",
  "check": "npm-run-all --parallel tsc lint lint:format",
  "tsc": "tsgo"
}

市面上有许多功能复杂的同类工具,部分包管理器也内置了并行执行能力,但对于轻量的脚本并行需求,这款工具的表现出奇地好,原因如下:

  • 不会引入额外的日志输出开销;
  • 不会拆分或交错不同任务的输出内容,同一时间仅打印一个任务的输出;
  • 任一任务执行失败,立即终止所有任务;
  • 按下ctrl+c时,能真正立即终止所有运行中的进程。

ts-node

目前市面上有许多能在开发阶段运行 TypeScript 的方案,但我始终没有找到一款能完全支持 TypeScript 所有特性(JSX、枚举等),且在运行 Node.js 服务时,能比nodemon+ts-node+swc的组合更快、支持文件变更即时重启的方案:

pnpm nodemon -q -I --exec node --no-warnings --experimental-specifier-resolution=node --loader ts-node/esm --env-file .env index.ts

同时需在项目的tsconfig.json中添加如下配置:

"ts-node": {
  "transpileOnly": true,
  "transpiler": "ts-node/transpilers/swc",
  "files": true,
  "compilerOptions": {
    "module": "esnext",
    "isolatedModules": false
  }
}

我在手动编码时习惯开启自动保存,当代码变更涉及 Node.js 服务时,我希望每次按键保存后,服务都能立即重启。我几乎试过了市面上所有的方案,没有一款能在速度上与这个组合匹敌。如果你知道一款无任何取舍、表现更优的方案,欢迎私信我

依旧经典的优质工具

值得一提的是,自我上次撰写相关主题内容后,以下这些工具至今仍是我日常开发的必备之选。

pnpm

pnpm 是目前最好的 JavaScript 包管理器,兼具极致的速度和完善的功能。

Vite

我无法想象,现在搭建 Web 项目还会选择除 Vite 之外的打包工具和开发服务器。它是目前构建 Web 应用最快、最稳定、扩展性最强的平台,而随着底层集成 Rolldown,它的速度还将再上一个台阶。

React

我试过各种各样的 UI 框架,但最终还是会回到 React 的怀抱。React Compiler 让它的运行性能始终保持极致,异步 React 特性则让它始终紧跟现代前端的发展步伐。我最近还开发了 fate—— 一款为 React 和 tRPC 打造的现代数据客户端不妨一试!


JavaScript 工程化工具的核心诉求是高速、稳定、功能完善。近年来,业界有过许多打造新一代工具的尝试,但这些尝试都不得不做出各种取舍。而使用本文介绍的这套全新工具链,你无需再做任何妥协。(补充:目前开发体验的最后一个痛点,是项目根目录下繁多的配置文件。不过不用担心,Vite + 很快就会解决这个问题。)

感谢你的阅读,祝你开发愉快!