SuperAPI AI 工具集

antfu

编程与开发

查看项目

更新于 10-16 14:56

技能介绍

antfu 是一套主观的工具链与 JavaScript/TypeScript 项目约定,用于统一代码风格、工具选择与工程结构。

用途 适用于新项目搭建、ESLint/Prettier 替代方案配置、monorepo、库发布,或用户提到 antfu 偏好时的场景。

代码组织约定

  • 单一职责:每个源文件应有清晰、聚焦的范围或目的。
  • 拆分大文件:当文件过大或承担过多关注点时进行拆分。
  • 类型分离:始终将类型与接口拆分到 types.ts 或 types/*.ts。
  • 常量提取:将常量移动到专门的 constants.ts 文件。

运行时环境约定

  • 优先编写同构代码:尽可能编写在 Node、浏览器和 worker 中都能运行的、与运行时无关的代码。
  • 明确运行时标记:当代码针对特定环境时,在文件顶部添加注释: // @env node // @env browser

TypeScript 约定

  • 显式返回类型:尽可能显式声明返回类型。
  • 避免复杂的行内类型:将复杂类型提取为专门的类型或接口声明。

注释约定

  • 避免不必要的注释:代码应当是自解释的。
  • 解释“为什么”而非“如何”:注释应描述原因或意图,而不是代码在做什么。

测试(Vitest)约定

  • 测试文件:foo.ts → foo.test.ts(同目录)。
  • 使用 describe/it API(而非 test)。
  • 复杂输出使用 toMatchSnapshot。
  • 语言相关快照使用 toMatchFileSnapshot 并指定明确路径。

工具选择:@antfu/ni 命令

  • ni:安装依赖
  • ni <pkg> / ni -D <pkg>:添加依赖 / 开发依赖
  • nr <script>:运行脚本
  • nu:升级依赖
  • nun <pkg>:卸载依赖
  • nci:干净安装(pnpm i --frozen-lockfile)
  • nlx <pkg>:执行包(npx)

TypeScript 配置 { "compilerOptions": { "target": "ESNext", "module": "ESNext", "moduleResolution": "bundler", "strict": true, "esModuleInterop": true, "skipLibCheck": true, "resolveJsonModule": true, "isolatedModules": true, "noEmit": true } }

ESLint 配置 // eslint.config.mjs import antfu from '@antfu/eslint-config'

export default antfu()

完成任务时,运行 pnpm run lint --fix 来格式化代码并修复编码风格。详细配置选项参见 antfu-eslint-config。

Git 钩子 { "simple-git-hooks": { "pre-commit": "pnpm i --frozen-lockfile --ignore-scripts --offline && npx lint-staged" }, "lint-staged": { "*": "eslint --fix" }, "scripts": { "prepare": "npx simple-git-hooks" } }

pnpm Catalogs 在 pnpm-workspace.yaml 中使用命名 catalog 进行版本管理:

  • prod:生产依赖
  • inlined:打包器内联依赖
  • dev:开发工具(linter、bundler、测试)
  • frontend:前端库 避免使用默认 catalog。Catalog 名称可根据项目需要调整。

参考主题

  • ESLint Config:框架支持、格式化器、规则覆盖、VS Code 设置,参考 antfu-eslint-config。
  • Project Setup:.gitignore、GitHub Actions、VS Code 扩展,参考 setting-up。
  • App Development:Vue/Nuxt/UnoCSS 约定与模式,参考 app-development。
  • Library Development:tsdown 打包、纯 ESM 发布,参考 library-development。
  • Monorepo:pnpm workspaces、集中式 alias、Turborepo,参考 monorepo。

限制 以上内容为主观约定,具体框架支持、配置项细节等需参考相应外部文档;本次资料未提供这些外部文档的完整内容,也未提供收费、价格或平台信息。