共享 ESLint 和 tsconfig 最好单独做成包
· 阅读需 2 分钟
monorepo 做到一段时间后,最容易悄悄失控的东西不是业务代码,而是配置。每个包都带一份 .eslintrc、每个应用都抄一个 tsconfig,开始时觉得快,过几个月就会发现规则微妙分叉,谁也说不清“仓库到底应该按哪套标准走”。
monorepo 做到一段时间后,最容易悄悄失控的东西不是业务代码,而是配置。每个包都带一份 .eslintrc、每个应用都抄一个 tsconfig,开始时觉得快,过几个月就会发现规则微妙分叉,谁也说不清“仓库到底应该按哪套标准走”。
2022 年工程化领域很明显的一个趋势,是越来越多团队开始认真看 monorepo。前后端、组件库、脚本工具、共享类型都在一个仓库里管理,这种方式开始从“大厂专属”变成普通团队也会考虑的选择。
当仓库开始拆成多个应用和共享包之后,很多命令如果还按单仓库思路跑,就会越来越笨重。一次改了前端页面,却要把整个 monorepo 的所有包都 lint、test、build 一遍,这种开销很快就会把研发节奏拖慢。
很多团队第一次把项目迁进 pnpm workspace,最先感受到的是安装速度和依赖管理变舒服了。但真正决定 monorepo 能不能长期跑下去的,不是工具本身,而是包边界到底收得稳不稳。