什么是 MFSU?提高研发效率。不管多大的项目,有缓存时启动 1s~3s+,热更新平均 500ms 内

Why?

提高研发效率。不管多大的项目,有缓存时启动 1s~3s+,热更新平均 500ms 内,

什么是 MFSU?

  • 🍉 不管多大的项目,有缓存时启动 1s+,热更新平均 500ms 内
  • 🍒 配置 mfsu 开启,无需修改项目代码
  • 🍑 基于 webpack 的通用方案,umi 3 项目均可用
  • 🍓 可用于生产,可多人协作
  • 🥕 beta 阶段提供手把手服务群

启用方式

  1. 先确保是 umi 3 项目
  2. 修改依赖里的 umi 版本为 "^3.5.0"
- "umi": "3"
+ "umi": "^3.5.0"
  1. 重装依赖
  2. 修改配置,加上 mfsu 配置
// 只需要 dev,这么配
+ mfsu: {},

// 如果需要针对生产环境生效,这么配
+ mfsu: { production: { output: '.mfsu-production' } },
  1. 清空 src/.umi
  2. 启动 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.

image

几个选择:

  1. 需要更新相关依赖到最新,因为这个版本的依赖和 webpack5 不兼容
  2. 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 报错

e.g.
image

如果报错的是项目文件,给此文件后面加一行 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 文件功能。

 

 

posted on 2021-07-07 15:18  小宇子李  阅读(6004)  评论(1编辑  收藏  举报

导航