Skip to content

技术栈选择标准

核心技术栈

强制标准(必须使用)

类别技术选择版本要求理由
运行时Node.js>=20.0.0LTS 版本,原生 ESM 支持
语言TypeScript>=5.0.0类型安全,生态成熟
包管理器pnpm>=8.0.0性能最优,磁盘效率高
模块系统ESM-现代标准,tree-shaking
代码检查ESLint>=8.0.0行业标准,插件丰富
代码格式化Prettier>=3.0.0零配置,一致性强
版本控制Git>=2.0.0行业标准

推荐标准(优先选择)

类别技术选择适用场景备选方案
测试框架Vitest单元测试、集成测试Jest(遗留项目)
构建工具ViteWeb 应用、库构建esbuild、tsup
MonorepoTurborepo多包项目Nx、Lerna
Git HooksLefthook快速、并行执行、单文件配置Husky(复杂)
提交规范Commitlint提交消息验证-
版本管理ChangesetsMonorepo 版本发布-

版本策略

Node.js 版本

javascript
// .nvmrc
20.11.0  // 当前 LTS

// package.json
"engines": {
  "node": ">=20.0.0"
}

升级原则

  • 始终使用 Active LTS 版本
  • 新项目使用最新 LTS
  • 现有项目每年升级一次
  • 不使用奇数版本(非 LTS)

TypeScript 版本

javascript
// package.json
"devDependencies": {
  "typescript": "^5.3.0"  // 允许小版本更新
}

升级原则

  • 紧跟最新稳定版
  • 季度评估升级
  • 注意 breaking changes

框架选择标准

后端框架

用途首选理由禁用
API 服务NestJS企业级、模块化、装饰器模式Express(缺少结构)
GraphQLNestJS + GraphQL集成完善、类型安全-
微服务NestJS微服务原生支持-
CLI 工具Commander.js简单易用、文档完善-

前端框架(Node.js 工具链)

用途首选理由禁用
React 构建Vite快速、ESM 原生Create React App
Vue 构建Vite官方推荐Vue CLI
SSR/SSGNext.js/Nuxt生态成熟-

依赖选择原则

必须满足的条件

  • [ ] 活跃维护 - 最近 6 个月有更新
  • [ ] 许可证兼容 - MIT、Apache 2.0、BSD
  • [ ] 安全性 - 无已知高危漏洞
  • [ ] 类型支持 - 原生 TypeScript 或有 @types
  • [ ] 文档完善 - 有清晰的 API 文档
  • [ ] 社区活跃 - GitHub stars > 100

评估矩阵

评估维度权重及格线
维护活跃度30%月度更新
性能表现25%基准测试前 50%
社区生态20%npm 周下载 > 10k
文档质量15%API 文档完整
类型支持10%TypeScript 原生

禁用技术清单

明确禁用

技术禁用原因替代方案
npm/yarn性能差、磁盘占用大pnpm
CommonJS过时、无 tree-shakingESM
Callback回调地狱、难维护Promise/Async
TSLint已废弃ESLint
Moment.js体积大、不支持 tree-shakingdate-fns、dayjs
Request已废弃fetch、axios
Node < 20缺少现代特性Node.js 20+

谨慎使用

技术使用限制注意事项
装饰器仅 NestJS 项目实验性特性
Webpack仅特殊需求优先用 Vite
Babel仅必要时TypeScript 够用
ORM评估必要性考虑 SQL builder
Husky避免使用用 Lefthook 替代

关键技术选择理由

为什么选择 Lefthook 而不是 Husky

对比维度LefthookHusky
性能并行执行,更快串行执行,较慢
配置单个 YAML 文件多个 shell 脚本
依赖Go 二进制,轻量Node.js 依赖
灵活性内置 glob、并行、条件执行需要额外工具
维护配置集中,易维护分散脚本,难管理

技术债务管理

遗留项目处理

  1. 逐步迁移 - 不强制立即重写
  2. 新功能新标准 - 新增部分使用新技术栈
  3. 关键路径优先 - 核心模块优先升级
  4. 设置过渡期 - 给出明确的迁移时间表

技术评审机制

  • 新技术引入需要技术评审
  • 评审内容:必要性、风险、成本
  • 决策记录:ADR(Architecture Decision Records)
  • 试点项目:新技术先在小项目试点

项目类型技术栈

CLI 工具

json
{
  "基础": "Node.js + TypeScript + ESM",
  "框架": "Commander.js",
  "打包": "tsup",
  "测试": "Vitest"
}

API 服务

json
{
  "基础": "Node.js + TypeScript + ESM",
  "框架": "NestJS",
  "验证": "class-validator + class-transformer",
  "数据库": "TypeORM / Prisma",
  "文档": "Swagger (内置)",
  "测试": "Jest (内置) + Supertest"
}

Monorepo 项目

json
{
  "基础": "Node.js + TypeScript + ESM",
  "管理": "pnpm workspace + Turborepo",
  "版本": "Changesets",
  "构建": "Vite / tsup",
  "质量": "ESLint + Prettier + Lefthook"
}

Electron 客户端

json
{
  "基础": "Node.js + TypeScript",
  "框架": "Electron + Vite",
  "UI框架": "React / Vue",
  "状态管理": "Zustand / Pinia",
  "样式": "Tailwind CSS",
  "进程通信": "Electron IPC + tRPC",
  "打包": "electron-builder"
}

决策流程

合规检查清单

项目启动前必须确认:

  • [ ] Node.js 版本 >= 20.0.0
  • [ ] 使用 pnpm 作为包管理器
  • [ ] 配置 TypeScript 5+
  • [ ] 使用 ESM 模块系统
  • [ ] 配置 ESLint + Prettier
  • [ ] 设置 Git hooks
  • [ ] 所有依赖符合选择原则
  • [ ] 无禁用技术的使用

提示:技术选型影响项目长期维护,请严格遵守标准。

基于 MIT 许可发布