diff --git a/docs/config/README.md b/docs/config/README.md index 0661e4c9fcde..46e0f8ac03e0 100644 --- a/docs/config/README.md +++ b/docs/config/README.md @@ -16,7 +16,7 @@ toc: menu * Type: `object` * Default: `{}` -配置别名,对引用路径进行隐射。 +配置别名,对引用路径进行映射。 比如: diff --git a/docs/guide/boost-compile-speed.md b/docs/guide/boost-compile-speed.md new file mode 100644 index 000000000000..26eed688cf9d --- /dev/null +++ b/docs/guide/boost-compile-speed.md @@ -0,0 +1,108 @@ +--- +translateHelp: true +--- + +# 如何做编译提速 + + +如果遇到编译慢,内存爆掉,OOM 等问题,可尝试以下方法。 + +## 配置 `nodeModulesTransform` 为 `{ type: 'none' }` + +> 需要 Umi 3.1 。 + +Umi 默认编译 node\_modules 下的文件,带来一些收益的同时,也增加了额外的编译时间。如果不希望 node\_modules 下的文件走 babel 编译,可通过以下配置减少 40% 到 60% 的编译时间。 + +```js +export default { + nodeModulesTransform: { + type: 'none', + exclude: [], + }, +} +``` + +## 查看包结构 + +执行 `umi dev` 或 `umi build` 时,增加环境变量 `ANALYZE=1` 可查看产物的依赖占比。 + + + +注意: + +* `umi dev` 可以实时修改和查看,但会引入一些开发依赖,注意忽略 + +## 配置 externals + +对于一些大尺寸依赖,比如图表库、antd 等,可尝试通过 externals 的配置引入相关 umd 文件,减少编译消耗。 + +比如 react 和 react-dom: + +```js +export default { + // 配置 external + externals: { + 'react': 'window.React', + 'react-dom': 'window.ReactDOM', + }, + + // 引入被 external 库的 scripts + // 区分 development 和 production,使用不同的产物 + scripts: process.env.NODE_ENV === 'development' ? [ + 'https://gw.alipayobjects.com/os/lib/react/16.13.1/umd/react.development.js', + 'https://gw.alipayobjects.com/os/lib/react-dom/16.13.1/umd/react-dom.development.js', + ] : [ + 'https://gw.alipayobjects.com/os/lib/react/16.13.1/umd/react.production.min.js', + 'https://gw.alipayobjects.com/os/lib/react-dom/16.13.1/umd/react-dom.production.min.js', + ], +} +``` + +注意: + +1. 如果要支持 IE10 或以下,external react 还需要额外引入补丁,比如 `https://gw.alipayobjects.com/os/lib/alipay/react16-map-set-polyfill/1.0.2/dist/react16-map-set-polyfill.min.js` +2. 如果 external antd,需同时 external 额外的 moment、react 和 react-dom,并在 antd 前引入 + +## 减少补丁尺寸 + +Umi 默认会包含以下浏览器及其版本的补丁, + +``` +chrome: 49, +firefox: 64, +safari: 10, +edge: 13, +ios: 10, +``` + +选择合适的浏览器版本,可减少不少尺寸,比如配成以下这样,预计可减少 90K (压缩后未 gzip)的尺寸。 + +``` +chrome: 79, +firefox: false, +safari: false, +edge: false, +ios: false +``` + +注意: + +* 把浏览器设为 false 则不会包含他的补丁 + +## 调整 splitChunks 策略,减少整体尺寸 + +TODO,HELP\_WANTED。 + +## 通过 NODE\_OPTIONS 设置内存上限 + +如果出现 OOM,也可以通过增加内存上限尝试解决。比如 `NODE_OPTIONS=--max_old_space_size=4096` 设置为 4G。 + +## 不压缩 + +> 不推荐,紧急情况下使用。 + +编译慢中压缩时间占了大部分,所以如果编译时不压缩可节约大量的时间和内存消耗,但尺寸会增加不少。通过环境变量 `COMPRESS=none` 可跳过压缩。 + +```bash +$ COMPRESS=none umi build +``` diff --git a/docs/guide/boost-compile-speed.zh-CN.md b/docs/guide/boost-compile-speed.zh-CN.md new file mode 100644 index 000000000000..28ae04ad1c75 --- /dev/null +++ b/docs/guide/boost-compile-speed.zh-CN.md @@ -0,0 +1,104 @@ +# 如何做编译提速 + +如果遇到编译慢,内存爆掉,OOM 等问题,可尝试以下方法。 + +## 配置 `nodeModulesTransform` 为 `{ type: 'none' }` + +> 需要 Umi 3.1 。 + +Umi 默认编译 node\_modules 下的文件,带来一些收益的同时,也增加了额外的编译时间。如果不希望 node\_modules 下的文件走 babel 编译,可通过以下配置减少 40% 到 60% 的编译时间。 + +```js +export default { + nodeModulesTransform: { + type: 'none', + exclude: [], + }, +} +``` + +## 查看包结构 + +执行 `umi dev` 或 `umi build` 时,增加环境变量 `ANALYZE=1` 可查看产物的依赖占比。 + + + +注意: + +* `umi dev` 可以实时修改和查看,但会引入一些开发依赖,注意忽略 + +## 配置 externals + +对于一些大尺寸依赖,比如图表库、antd 等,可尝试通过 externals 的配置引入相关 umd 文件,减少编译消耗。 + +比如 react 和 react-dom: + +```js +export default { + // 配置 external + externals: { + 'react': 'window.React', + 'react-dom': 'window.ReactDOM', + }, + + // 引入被 external 库的 scripts + // 区分 development 和 production,使用不同的产物 + scripts: process.env.NODE_ENV === 'development' ? [ + 'https://gw.alipayobjects.com/os/lib/react/16.13.1/umd/react.development.js', + 'https://gw.alipayobjects.com/os/lib/react-dom/16.13.1/umd/react-dom.development.js', + ] : [ + 'https://gw.alipayobjects.com/os/lib/react/16.13.1/umd/react.production.min.js', + 'https://gw.alipayobjects.com/os/lib/react-dom/16.13.1/umd/react-dom.production.min.js', + ], +} +``` + +注意: + +1. 如果要支持 IE10 或以下,external react 还需要额外引入补丁,比如 `https://gw.alipayobjects.com/os/lib/alipay/react16-map-set-polyfill/1.0.2/dist/react16-map-set-polyfill.min.js` +2. 如果 external antd,需同时 external 额外的 moment、react 和 react-dom,并在 antd 前引入 + +## 减少补丁尺寸 + +Umi 默认会包含以下浏览器及其版本的补丁, + +``` +chrome: 49, +firefox: 64, +safari: 10, +edge: 13, +ios: 10, +``` + +选择合适的浏览器版本,可减少不少尺寸,比如配成以下这样,预计可减少 90K (压缩后未 gzip)的尺寸。 + +``` +chrome: 79, +firefox: false, +safari: false, +edge: false, +ios: false +``` + +注意: + +* 把浏览器设为 false 则不会包含他的补丁 + +## 调整 splitChunks 策略,减少整体尺寸 + +TODO,HELP\_WANTED。 + +## 通过 NODE\_OPTIONS 设置内存上限 + +如果出现 OOM,也可以通过增加内存上限尝试解决。比如 `NODE_OPTIONS=--max_old_space_size=4096` 设置为 4G。 + +## 不压缩 + +> 不推荐,紧急情况下使用。 + +编译慢中压缩时间占了大部分,所以如果编译时不压缩可节约大量的时间和内存消耗,但尺寸会增加不少。通过环境变量 `COMPRESS=none` 可跳过压缩。 + +```bash +$ COMPRESS=none umi build +``` + diff --git a/docs/plugins/api.md b/docs/plugins/api.md index 9cfbf970b77c..781d477771f3 100644 --- a/docs/plugins/api.md +++ b/docs/plugins/api.md @@ -393,7 +393,7 @@ TODO 修改路由数组。 -### onBuildCompelete({ err?, stats? }) +### onBuildComplete({ err?, stats? }) 构建完成时可以做的事。 diff --git a/docs/plugins/plugin-antd.md b/docs/plugins/plugin-antd.md index ec297a7ef22b..96d6dddb06a3 100644 --- a/docs/plugins/plugin-antd.md +++ b/docs/plugins/plugin-antd.md @@ -44,13 +44,12 @@ translateHelp: true export default { antd: { dark: true, - // or compact: true, }, } ``` -启用暗色主题,只有 antd 使用版本 4 时才支持。紧凑主题在 `antd@>4.1.0` 时支持。暗色主题和紧凑主题无法同时开启。 +启用暗色主题,只有 antd 使用版本 4 时才支持。紧凑主题在 `antd@>4.1.0` 时支持。 ## FAQ diff --git a/docs/plugins/plugin-layout.md b/docs/plugins/plugin-layout.md index 1cb744f15b73..253c38a43d16 100644 --- a/docs/plugins/plugin-layout.md +++ b/docs/plugins/plugin-layout.md @@ -170,7 +170,7 @@ menu 的可配置项包括: * Type: `string` 当前菜单的左侧 icon,可选 antd 的 icon name 和 url,可选。 -> icon name is evaluated as component name => toLowerCase => remove `outlined` | `filled` | `twotone`. For example: `` => `user` +> icon name 为 组件名小写后去掉 `outlined` 或者 `filled` 或者 `twotone`,所得值。举例:`` 的 icon name 即: `user`。 3. hideChildren