The way of Webpack learning (II.) -- Extract common code(多页面提取公共代码)

Posted Westbrook维

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了The way of Webpack learning (II.) -- Extract common code(多页面提取公共代码)相关的知识,希望对你有一定的参考价值。

学习之路基于webpack3.10.0,webpack4.0之后更新。

多页面提取公共代码!!!

一:文件关系

pageA --> subA、subB --> moduleA

pageB --> subA、subB --> moduleA

那么pageA、pageB 的公共代码就是subA、subB 、moduleA。

二:webpack.config.js文件配置

var webpack = require(‘webpack‘)
var path = require(‘path‘);

module.exports = {
    entry:{
        "pageA":‘./src/pageA.js‘,
        "pageB":‘./src/pageB.js‘,
        ‘vendor‘:[‘lodash‘]//第三方插件
    },
    output:{
        path:path.resolve(__dirname,‘./dist‘),
        filename:‘[name].bundle.js‘,
        chunkFilename:‘[name].chunk.js‘
    },
    plugins:[
        new webpack.optimize.CommonsChunkPlugin({//打包业务逻辑上面的公共代码
            name:‘common‘,
            minChunks:2,
            chunks:[‘pageA‘,‘pageB‘]
        }),
        new webpack.optimize.CommonsChunkPlugin({//打包第三方插件lodash的代码
            name:‘vendor‘,
            minChunks:Infinity
        }),
        new webpack.optimize.CommonsChunkPlugin({//打包webpack代码
            name:‘manifest‘,
            minChunks:Infinity
        })
    ]
}

  打包公共代码只适合多页面应用。

三:webpack4中的打包公共代码

webpack4已经移除了commonchunkPlugin,直接在配置里面写即可。

const webpack = require("webpack");
const path = require("path");

module.exports = {
    mode:‘development‘,
    // 多页面应用
    entry: {
        pageA: "./src/pageA.js",
        pageB: "./src/pageB.js"
    },
    output: {
        path: path.resolve(__dirname, "dist"),
        filename: "[name].bundle.js",
        chunkFilename: "[name].chunk.js"
    },
    optimization: {
        splitChunks: {
            cacheGroups: {
                // 注意: priority属性
                // 其次: 打包业务中公共代码
                common: {
                    name: "common",
                    chunks: "all",
                    minSize: 1,
                    priority: 0//优先级
                },
                // 首先: 打包node_modules中的文件
                vendor: {
                    name: "vendor",
                    test: /[\/]node_modules[\/]/,
                    chunks: "all",
                    priority: 10
                }
            }
        }
    }
};

  

以上是关于The way of Webpack learning (II.) -- Extract common code(多页面提取公共代码)的主要内容,如果未能解决你的问题,请参考以下文章

The way of Webpack learning (II.) -- Extract common code(多页面提取公共代码)

The way of Webpack learning (V.) -- css和js的tree shaking

The way of Webpack learning (III.) -- codeSplitting & lazyLoding(代码分割和路由懒加载)

the Way of Python Day 2

the Way of Python Day 3

reviews of learn python3 the hard way