webpack5 中 optimization的配置解释
时间: 2023-04-01 10:03:48 浏览: 388
webpack5 中 optimization 的配置是用来优化打包后的代码的,可以通过配置不同的选项来实现不同的优化效果。其中包括了如下几个选项:
1. minimize:是否压缩代码,默认为 true。
2. minimizer:压缩代码的插件,可以配置多个。
3. splitChunks:代码分割,将公共代码提取出来,避免重复打包。
4. runtimeChunk:将运行时代码单独打包成一个文件,避免重复打包。
5. moduleIds:模块 ID 的生成方式,默认为 'natural',可以配置为 'named' 或 'hashed'。
6. chunkIds:代码块 ID 的生成方式,默认为 'natural',可以配置为 'named' 或 'hashed'。
7. usedExports:是否只导出被使用的代码。
8. sideEffects:是否开启副作用标记,用于 tree shaking。
9. concatenateModules:是否开启模块合并。
10. emitOnErrors:是否在编译出错时生成文件。
以上就是 optimization 的配置解释。
相关问题
webpack的 optimization
optimization 是 webpack 的一个配置项,用于优化打包后的代码。
optimization 中包含了一些优化的配置项,例如:
- minimize:是否开启代码压缩,默认为 true;
- minimizer:指定使用哪些压缩插件,例如 UglifyJsPlugin、TerserPlugin 等;
- splitChunks:用于代码分割,提取公共代码,避免重复打包;
- runtimeChunk:用于提取每个入口文件的运行时代码,避免重复打包。
其中,splitChunks 和 runtimeChunk 都是用于代码分割的配置项。
splitChunks 配置项的默认值如下:
```
splitChunks: {
chunks: 'async',
minSize: 30000,
maxSize: 0,
minChunks: 1,
maxAsyncRequests: 5,
maxInitialRequests: 3,
automaticNameDelimiter: '~',
name: true,
cacheGroups: {
vendors: {
test: /[\\/]node_modules[\\/]/,
priority: -10
},
default: {
minChunks: 2,
priority: -20,
reuseExistingChunk: true
}
}
}
```
这个配置项会将所有符合条件的模块打包成一个单独的文件,并且自动处理模块间的依赖关系。例如,如果有两个入口文件都引用了同一个模块,webpack 会将这个模块提取成一个单独的文件,避免重复打包。
runtimeChunk 配置项的默认值如下:
```
runtimeChunk: {
name: entrypoint => `runtime-${entrypoint.name}`
}
```
这个配置项会将每个入口文件的运行时代码提取成一个单独的文件,避免重复打包。例如,如果有两个入口文件都使用了相同的第三方库,webpack 会将这个库的代码提取成一个单独的文件,并且将每个入口文件的运行时代码提取成另一个单独的文件。这样做的好处是,当我们修改了某个入口文件的代码时,只需要重新打包这个入口文件和它对应的运行时代码,而不需要重新打包第三方库的代码。
webpack 打包优化具体配置
Webpack打包优化具体配置如下:
1. 缩小打包体积:可以通过以下方式缩小打包体积。
- Tree Shaking:在Webpack 4中,可以通过设置mode为production自动启用Tree Shaking,去除无用代码。也可以通过设置optimization.usedExports为true手动启用。
- Code Splitting:通过使用Webpack的Code Splitting功能,将一个大文件拆分成多个小文件,只按需加载需要的模块。
- 动态导入:通过使用import()或require.ensure()等语法,实现按需加载模块。
2. 加快打包速度:可以通过以下方式加快打包速度。
- 缓存:使用babel-loader时,可以开启缓存,避免相同的文件重复编译。
- 多线程:使用HappyPack或thread-loader等插件,将loader的执行过程多线程并行处理,提高打包速度。
- DllPlugin:使用DllPlugin将第三方库单独打包成一个文件,减少重复打包,提高打包速度。
3. 优化代码质量:可以通过以下方式优化代码质量。
- ESLint:使用ESLint进行代码风格检查和错误检查,提高代码质量。
- Prettier:使用Prettier进行代码格式化,统一代码格式,提高代码可读性。
- TypeScript:使用TypeScript进行类型检查,提高代码质量和可维护性。
4. 优化图片资源:可以通过以下方式优化图片资源。
- 压缩:使用imagemin-webpack-plugin等插件,对图片进行压缩。
- 转换:使用url-loader或file-loader等插件,将图片转换为DataURL或Base64格式,减少网络请求。
- 懒加载:使用Intersection Observer API等技术,实现图片懒加载,提高页面加载速度。
5. 拆分第三方库:可以通过以下方式拆分第三方库。
- externals:通过配置externals属性,将第三方库从Webpack打包文件中排除,使用CDN等方式加载。
- DllPlugin:使用DllPlugin将第三方库单独打包成一个文件,通过CDN等方式加载,减少打包体积和页面加载时间。
6. 优化Webpack配置:可以通过以下方式优化Webpack配置。
- resolve.alias:通过配置resolve.alias属性,指定模块的别名,加快模块查找速度。
- noParse:通过配置noParse属性,排除不需要解析的模块,加快打包速度。
以上是Webpack打包优化的具体配置,具体实现需要根据具体项目情况进行分析和决策。