美文网首页
2020-12-02 CSS 文件的代码分割(4.91)

2020-12-02 CSS 文件的代码分割(4.91)

作者: 夏天的风2020 | 来源:发表于2020-12-03 09:54 被阅读0次
    //build目录下,webpack.common.js文件
    
    const path = require('path')   
    const HtmlWebpackPlugin = require('html-webpack-plugin')
    const CleanWebpackPlugin  = require('clean-webpack-plugin')
    
    module.exports = {
        entry: {
            main: "./src/index.js"
        },  
        module: {
            rules: [
            {
                test: /\.js$/, 
                exclude: /node_modules/,  
                loader: 'babel-loader'
            },
            {
                test: /\.(jpg|png|gif)$/,
                use: {
                    loader: 'url-loader',
                    options: {
                        name: '[name]_[hash].[ext]',
                        outputPath: 'images/',
                        limit: 10240
                    }
                }
            },
            {
                test: /\.(eot|ttf|svg|woff)$/,
                use: {
                    loader: 'file-loader'
                }
            },
            {
                test: /\.scss$/,
                    use: [
                        'style-loader',
                        {
                            loader: 'css-loader',
                            options: {
                                importLoaders: 2
                            }
                        },
                        'sass-loader',
                        'postcss-loader'
                    ]
            },{
                test: /\.css$/,
                    use: [
                        'style-loader',
                        'css-loader',
                        'postcss-loader'
                    ]
            }]
        },
        plugins: [
            new HtmlWebpackPlugin({
                template:'./src/index.html'
            }),
            new CleanWebpackPlugin()
        ],
       optimization: {
         splitChunks: {
           chunks: 'all',
         },
       },
        output: {
            filename: '[name].js' , //入口文件打包生成的文件名字
            chunkFilename:'[name].chunk.js',//间接引入的模块打包的时候,
                                           //生成的文件的名字就会走chunkFilename的配置内容
            path:path.resolve(__dirname,'dist'),   
        }
    }
    
    filename和chunkFilename有什么样的区别呢?
    在src目录下index.js文件中,
    异步的引入lodash这样的库,
    创建一个DOM,挂载到页面上,
    打包,
    配置chunkFilename后,打包会是设么样子的?
    
    
    2.png
    3.png 1.png
    entry: {
            main: "./src/index.js"
        }, 
    index.js是入口文件在entry里面,
    入口文件打包生成的这种js文件,都会走filename这个配置项,
    所以index.js在做打包的时候,它前面的值是main:,
    它打包生成的文件就是main.js
    
    main.js里面会引入lodash,
    lodash又被单独打包生成了一个文件vendors~lodash.chunk.js,
    
    打包生成文件在整个代码运行的过程中,
    main.js先执行,然后异步的去加载这个vendors~lodash.chunk.js,
    
    这个vendors~lodash.chunk.js并不是一个入口的js问价,
    它是一个被main.js异步加载的间接js文件,
    如果你打包生成这样一个间接的js文件,
    它就会走chunkFilename这个配置项,
    
    
    4.png

    或者查看dist目录下index.html文件


    5.png
    可以看到里面只引入了main.js,
    所以main.js其实走的是入口文件,
    所以走的就是filename这样一个配置参数
    
    而vendors~lodash.chunk.js在index.html中找不到,
    它是怎么载入的呢?
    它是通过mian.js的代码里面再去引入lodash.js,
    是间接引入的,
    间接引入的模块打包的时候,
    生成的文件的名字就会走chunkFilename的配置内容
    
    

    相关文章

      网友评论

          本文标题:2020-12-02 CSS 文件的代码分割(4.91)

          本文链接:https://www.haomeiwen.com/subject/jonywktx.html