v4.0.0-rc.9
Pre-release1、@umijs/max 的命令行从 umimax 更换为 max
# before
$ umimax
# after
$ max
2、umi cli 启动提速,从 5s+ 到 1s+
3、完善 mfsu,修复 hmr 不生效问题,以下是笔记
mfsu 模式下默认关闭了 fast refresh,因为有些兼容问题,原因未知,所以走的是 webpack 的 hmr https://github.com/umijs/umi-next/blob/9c8dc239ea05d03bcfc06b440e623cb020b7d26c/packages/bundler-webpack/src/config/fastRefreshPlugin.ts#L20 。
bundler-webpack/client/client/client.js 负责热更操作,之前这个文件也是被 mfsu 匹配的,但是里面包含 module.hot 的判断,打包之后会被写死为 false,导致 hmr 失效,始终走页面刷新,https://github.com/umijs/umi-next/blob/9c637aef5279c80f56155710f6bf45452158a6bf/packages/bundler-webpack/src/client/client.ts#L173
解法是让这个文件不走 mfsu 预编译,而是和项目文件一起打包。
4、完善 mfsu,修复一些边界场景报错之后的恢复问题,同时调整了日志,DX 会更好一些,应该不再需要手动删除 node_modules/.cache 的缓存文件
5、新增 mfsu.chainWebpack 配置
mfsu: {
chainWebpack(memo) { memo.resolve.alias.set('foo', 'bar') }
}
chainWebpack 配置不会对 mfsu 场景下有效,所以新增 mfsu.chainWebpack 专门针对 mfsu 的 webpack 配置进行调整。
6、完善 mfsu,修复 app.ts 里无 export 内容时报错的问题
开启 mfsu 时,如果文件无 export 信息,会默认增加一个 export const __mfsu = 1,但最近测试时发现不需要了,原因应该是之前调整了 mfsu 的入口实现,webpack 会自动处理这个场景。解法是删除相应的 babel 插件,黑科技又少一个。
7、完善 access 插件,新增 Access 导出,同时支持路由通过 access 属性设置权限
import { Access } from 'umi';
routes: [
{ path: '/users', access: 'manager' }
]
8、umi 新增 verify-commit 命令,推荐打开 husky 使用
$ umi verify-commit
如果需要支持 emoji 前缀,可通过配置实现,
verifyCommit: {
allowEmoji: true,
}
9、appData 新增 locale 信息,插件开发者可基于此分别输出中文和英文日志
10、proxy 中间件新增 x-real-url 属性,便于问题排查
11、修复 mock 文件不支持 cjs 的问题
12、修复使用 yarn 安装 umi 会失败的问题
13、支持 Umi 3 的多环境配置
$ UMI_ENV=cloud umi dev