项目做到几十个页面,构建一次要等三分钟,改一行代码热更新也慢。这种时候优化构建,比催开发管用。
先看时间花在哪
构建一次三分钟,该从哪下手?构建慢先别乱改配置,先看分析报告。打包工具都能生成耗时分析,哪个模块拖后腿一眼看得出来。我们遇到最多的是把整个组件库全量引入。实际只用了三个组件。改成按需引入,构建时间从两分半降到四十秒。另一个大头是图片和字体没走资源模块,全被打进包里。难的是先想到去看报告。
缓存也要用好。依赖不变的时候不必重新编译,把依赖单独打包,命中缓存就跳过。我们有项目靠这一项把冷启动时间砍掉一半。团队里常出现的问题是每次清缓存重建,图省事,结果每天等编译的时间加起来很可观。配置一次,后面都省。别嫌配置麻烦,它是一次性的。值不值得再投?
代码检查别等到末尾
提交前跑一遍格式化和静态检查,能把大部分低级问题挡在门口。等做完再统一查,改起来牵连一片,成本高得多。现在的工具都支持提交时自动格式化,配好之后没人需要记规则。我们要求团队提交前必须先过检查,过不了就改,不讨论。这条规矩执行下去,评审精力才能放在逻辑上。
类型检查也是同理。JS 项目加上类型标注,很多拼写错误在编辑器里就报出来,不用等运行时。老项目可以渐进加,新文件先写类型,慢慢覆盖。我们做过一个存量项目,加了三个月类型,线上报错少了一大半。代价是写类型要多花点时间,收益是后面少调试。团队超过三个人之后这笔账很划算。
环境要一致
本地能跑、服务器跑不起来,八成是环境不一致。把 Node 版本、依赖版本固定下来,用同一份配置。问题能少很多。容器化是个办法,但不是必须,先把版本文件提交上去也能解决大半。我们见过因为本地 Node 高两个小版本,构建产物不一样的。排查这种问题很耗心态,提前固定就没事。
前端工程化常见疑问
构建慢先改配置吗
先看打包工具生成的耗时分析,定位哪个模块或依赖拖慢,再针对性调整。
怎么提高构建速度
按需引入组件库、把依赖单独打包用缓存与静态资源走资源模块,避免全量打进包里。
代码检查何时做
放在提交环节自动执行,配合渐进式类型标注,比事后统一返工成本低。
总结:构建慢先看耗时报告,按需引入、用缓存以及固定环境;检查前置到提交环节,比事后返工便宜。