webpack

154 阅读1分钟

一、打包css 1、plugin: (1)'mini-css-extract-plugin':将所有css文件打包成一个文件 2、css-loader:默认会打包图片 二、打包js 1、babel 三、全局引入 1、expose-loader //暴露在window上 2、providePlugun //给每个模块提供 3、通过cdn引入,用externals排除node_models相应的包参与打包 三、源码映射 devtool: 'source-map' //打包后会产生单独一个源码文件 devtool: 'eval-source-map' //打包后不会单独产生一个源码文件,但也可以看到源码的行和列 用在开发环境 devtool: 'cheap-module-source-map' //用在生产环境,看不到行和列 四、给引入的文件加上一个公共路径 output: { publicPath: 'http://...' } 五、实时打包 watch: true 六、清空历史打包文件 cleanWebpackPlugin 七、复制不需要打包的文件,如.txt文件 copy-webpack-plugin 八、解决跨域问题,webpack-dev-server会起一个服务做代理

devServer: {
    proxy: {
        '/api': {
            target: '服务端地址',
            pathRewrite:{'/api': ''}
        }
    }
}

九、解析第三方包

image.png 十、定义环境变量(生产环境或开发环境) new webpack.DefinPlugin({

}) 十一、不去解析没必要的包(如:jq),加速打包时间 noParse: /jquery/, rules: [{ test: /.js$/, exclude: /node_modules/, include: path.resolve('src') }]

image.png 十二、多线程打包 happyPack 十三、按需打包 webpack在production环境中,如果用的是import导入,会自动使用按需打包, tree-shaking,不打包没用上的代码 require语法是不会自动做tree-shaking 十四、自动简化代码 webpack在生产环境中会自动简化代码如:一些多余的变量声明,会被去除 十五、抽取公共模块,抽取第三方包

image.png 十六、webpack提供的依赖懒加载方案 import() //会把依赖打包生成一个单独的文件

image.png 十七、热更新 devServer: { hot: true }

image.png