升级到 Umi 3
修改 的版本为 ^3.0.0
或以上,
由于 Umi 3 需要 Node 10.13 或以上,如果之前有配 engines,需确认下版本号。
tsconfig.json
为了有更好的 ts 提示,需配置 @@
为 ["src/.umi/*"]
。
+ "@@/*": ["src/.umi/*"]
如果之前有使用 umi-plugin-react
,以下是修改的步骤。
先在 package.json 中修改依赖,
export default {
- plugins: [
- ['umi-plugin-react', {
- antd: {},
- }]
- ],
+ dva: {},
+ antd: {},
+ ...
}
注意:
- 无需重复注册插件,Umi 3 会自动注册依赖中的 Umi 插件
- 配置提取到外面
功能变化,
- 删除了 routes、library、dll、hardSource、pwa、hd、fastClick、chunks,不可继续使用
- 内置 dynamicImport、title、scripts、headScripts、metas 和 links 到 Umi 中,可继续使用
- 其他功能不变
配置层
Umi 3 在配置层做了大量精简,以下修改以字母排序,便于查找。
- 删除 browserslist,和 targets 重复了
- 删除 babel,基本用不上
- 修改 cssLoaderOptions 命名为 cssLoader
- 删除 cssLoaderVersion,只保留 css-loader@2 的版本
- 删除 cssPublicPath,css 引用的资源文件用相对路径 可满足所有场景,没有必要再配
- 删除 disableRedirectHoist,始终不再做 redirect hoist
- 删除 disableCSSModules 和 cssModulesWithAffix,Umi 3 自动识别 css modules 的使用,无需配置
- 删除 extraBabelIncludes 和 es5ImcompatibleVersions,node_modules 也走 babel 编译后就没有意义了,无需配置
- 修改 history 格式为
{ type, options }
,不再支持 string 格式 - 修改 lessLoaderOptions 命名为 lessLoader
- 删除 minimizer,只保留 terserjs
- 修改 plugins 的格式为字符串,需要先确保依赖的插件是否升级到 Umi 3,然后修改方式参考前面 umi-plugin-react 的修改方式
- 删除 sass,不再支持,后续会以插件的方式提供
- 删除 treeShaking,已内置,无需配置
- 删除 tsConfigFile,没有必要
- 删除 typescript,TypeScript 编译交给 babel 处理后,之前 ts-loader 的配置就没有意义了
- 删除 uglifyJSOptions,没有必要
- 删除 urlLoaderExcludes,没有必要
代码层
不再保留 umi/xxx
的接口,全部从 umi 中 import。
比如:
- import router from 'umi/router';
+ import { history } from 'umi';
+ history.push('/foo');
需要加 前缀。
比如:
Umi v3 做了非常多的细节改进和重构,我们尽可能收集了已知的所有不兼容变化和相关影响,但是有可能还是有一些场景我们没有考虑到。如果你在升级过程中遇到了问题,请到 进行反馈。我们会尽快响应和相应改进这篇文档。
也可以加 “Umi 3 升级问题互帮互助” 群,