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 许可发布