umi3 的打包速度實屬感人闽寡,在 umi2 默認(rèn)使用了 hard-source-webpack-plugin
插件提升構(gòu)建速度帮碰,不知道為啥在 umi3 干掉了這一功能相味,那我們只好自己配置啦。
第一步肯定是安裝插件了
yarn add --dev hard-source-webpack-plugin
第二步在 config.ts
中使用 chainWebpack
配置插件
import { defineConfig } from 'umi';
export default defineConfig({
// webpack 配置
chainWebpack: function (config, { webpack }) {
// 打包加速
config.plugin('hardSource').use(HardSourceWebpackPlugin);
// 對下面配置的 module 不進(jìn)行緩存
config.plugin('hardSourceExcludeModule').use(HardSourceWebpackPlugin.ExcludeModulePlugin, [
[
{
test: /mini-css-extract-plugin[\\/]dist[\\/]loader/,
},
{
test: /eslint-loader/,
},
{
test: /.*\.DS_Store/,
},
],
]);
},
});
第一次構(gòu)建速度不會有變化殉挽,后面再構(gòu)建時會使用緩存進(jìn)行構(gòu)建丰涉,速度就會快很多。關(guān)于 hard-source-webpack-plugin
的更多配置可查看 github地址此再。
需要注意的是
當(dāng)使用了
hard-source
加速昔搂,umi 提供的SPEED_MEASURE
能力,也就是分析 Webpack 編譯時間的插件就不能用了输拇,兩者同時開啟再打包會報錯摘符,目前我還沒有研究出解決方案。因為還不清楚為什么 umi3 默認(rèn)放棄使用
hard-source
,因此我懷疑 umi 在使用這個插件時可能會有坑逛裤,大家謹(jǐn)慎使用瘩绒,我也是在測試中,后續(xù)一些問題及解決方案會同步更新...