什么是 MFSU?提高研发效率。不管多大的项目,有缓存时启动 1s~3s+,热更新平均 500ms 内
Why?
提高研发效率。不管多大的项目,有缓存时启动 1s~3s+,热更新平均 500ms 内,
什么是 MFSU?
- 🍉 不管多大的项目,有缓存时启动 1s+,热更新平均 500ms 内
- 🍒 配置 mfsu 开启,无需修改项目代码
- 🍑 基于 webpack 的通用方案,umi 3 项目均可用
- 🍓 可用于生产,可多人协作
- 🥕 beta 阶段提供手把手服务群
启用方式
- 先确保是 umi 3 项目
- 修改依赖里的 umi 版本为 "^3.5.0"
- "umi": "3"
+ "umi": "^3.5.0"
- 重装依赖
- 修改配置,加上 mfsu 配置
// 只需要 dev,这么配
+ mfsu: {},
// 如果需要针对生产环境生效,这么配
+ mfsu: { production: { output: '.mfsu-production' } },
- 清空 src/.umi
- 启动 umi dev
FAQ
卡在 99% 不动了?
99% 是进度条显示问题,webpackbar 和 webpack 5 的兼容还有点问题,实际已经成功了,可忽略。
Invalid key: mfsu
npx umi -v
看下,请确保是 umi@3.5.0 或以上。
Can not resolve ..., Do you mean ... 报错
e.g.
几个选择:
- 需要更新相关依赖到最新,因为这个版本的依赖和 webpack5 不兼容
- chainWebpack 里配上
config.module.rule('mjs-rule').test(/.m?js/).resolve.set('fullySpecified', false);
国际化不生效
需更新 @umijs/preset-react
到最新,已在 @umijs/plugin-locale
0.13.0 里修复。
Module parse failed: Top-Level-Await 报错
如果报错的是项目文件,给此文件后面加一行 export {}
,声明为 esm 模块格式。
如果文件中有用动态 require 语法怎么办?
改成 await import
写法,比如:
const test = 'test';
const foo = (await import((`../${test}`))).default;
参考:#6877
开启 SSR 时报错
暂不支持。
覆盖依赖的样式不生效(比如覆盖 antd 的样式)
目前没有很好的解法,需修改代码,提升覆盖样式的优先级。
有使用 dva 插件同时效果不佳?
配置 dva: { disableModelsReExport: {} }
,因为 export * from
目前尚未支持匹配到预编译。
antd 主题配置为啥失效?
如果你是用的 配置 less 变量文件 这种方式,切换到 theme 配置的方式,或尝试关闭 babel-plugin-import 的自动引入 less 文件功能。