一、Tree Shaking
Tree Shaking只支持ES Module引入方式,不支持CommonJS的引入方式。
在mode为development下,tree shaking不会开;而在mode为production时,tree shaking是自动开着的。
tree shaking的作用是不引入所有代码,只引入需要的代码。
//webpack.config.js中配置optimization: {usedExports: true}//package.json"sideEffects": false//如果需要配置,例如css文件不需要tree shaking"sideEffects": ["*.css"]
二、Development和Production模式的区分打包
区别有如下几点:
- sourcemap:在开发环境下,sourcemap是非常的全的,它能快速帮我们定位出问题代码的位置。
- 压缩代码:在生产模式下,代码时被压缩过的。
开发和生产模式分离:
创建build文件夹,在下面创建三个文件: webpack.common.js 、 webpack.dev.js 和 webpack.prod.js 分别代表公共的配置、开发环境配置和生产环境配置,目录结构如下所示。
这里合并两个js文件需要使用webpack-merge,首先用npm安装它,接着在项目中引入
//webpack.prod.jsconst merge = require('webpack-merge');const commonConfig = require('./webpack.common.js');const prodConfig = {mode: 'production',devtool: 'cheap-module-source-map'}module.exports = merge(commonConfig, prodConfig);//webpack.dev.jsconst merge = require('webpack-merge');const commonConfig = require('./webpack.common.js');const devConfig = {mode: 'development',devtool: 'cheap-module-eval-source-map',devServer: {contentBase: './dist',open: true,port: 8080,hot: true},}module.exports = merge(commonConfig, devConfig);
三、Code Splitting(代码分割)
代码分割和webpack无关
webpack中实现代码分割,两种方式
1.同步代码:只需要在webpack.common.js中做optimization的配置;具体配置如下
optimization: {splitChunks: {chunks: 'all'}},
2.异步代码(import):无需做任何配置,会自动进行代码分割
