公司中后台采用了 Ant Design Pro 模板,该模板与 umi 技术选型相结合的,我司最近要求升级一波依赖,于是踏上了自闭之旅。
背景
项目之前是基于 umi@2 版本,umi@3 做了一些列优化,从开发者的角度而言,主要有两点
- 依赖包集中收敛:之前需要导入乱七八糟一大堆东西,不深究也不知道是干嘛的,但作为强迫症而言,看着实在难受,umi@3 将依赖集中在
@umijs/preset-react
中,至少看上去显得更加专业些,也让强迫症舒服很多 - import all from umi:不用在记那么多的 import 方式了,全部从 umi 中导出,开发成本会低一些
umi@3 其他的一些改变
- 配置方式改变
- 自动化插件机制:扫描 package.json,对于 umi 的 plugin 会自动化注册
- locale 的封装,打了自己过去的脸,不推荐一种可能存在问题的用法,关键是之前还被我当成了它们的 feature,嗅!
Ant Design Pro 的一些变动
- 优化了部分内置组件
- 使用 hooks 改写了部分组件
- 优化了 script 脚本
- 更新权限认证模块
踩的坑
在单测方面卡了很多,一部分是自己的锅,但也有 umi 的锅,还有 jest 的锅
- 自己的锅,为了配合 CI 工作,修改 jest 的 reporters 配置,采用
jest-json-reporter2
进行 json 化输出,这里还是应该保留 default 选项,否则控制台看不到任何的报错 - umi 的锅,特意去找了下 umi@2 中依赖
umi-test
的源码,其会读取 webpack alias 配置,然后自动修改moduleNameMapper
配置,但 umi@3 并没有这么做,而且文档中也没有提,导致通过@
别名 import 文件报错。同时 umi@3 并没有 extraSetupFiles 配置项目,这一块官网也并没有提过,巨坑 - jest 会莫名其表报错 cache transform error,导致单测失败,查询其 issue 并没有解决方式,于是通过设置
cache: false
关闭 cache 功能解决
感悟
这个升级还是让自己有点自闭的,总结几点感悟吧
- 虽然使用了优秀的开源的项目模板,但一些配置的具体作用还是要了解透彻,不然在将来的某一天一定会坑你
- 对自己的要有信心哇,开源项目的代码质量也是参差不齐的,对于优秀的地方,积极学习实践,不优秀的地方要敢于质疑
- 不要企图希望其升级文档能涵盖方方面面,对于不太成熟的项目更是如此,他可能会做了 break change,但他自己忘记了,因此更不可能有文档。如果问题一直解决不了,大胆的直接去看源码,发现问题也许会快得多的多
也许 umi 并不能满足你对前端最佳实践的期待,但可以看出 umi 团队一直在积极探索,这是值得肯定的,而且很多沉淀,都非常值得学习借鉴。个人还挺期待的!