美文网首页
webpack多页面配置

webpack多页面配置

作者: visitor009 | 来源:发表于2018-09-29 14:37 被阅读0次
    $_> npm i -D webpack webpack-merge html-webpack-plugin clean-webpack-plugin mini-css-extract-plugin css-loader
    // webpack.config.js
    let path = require('path')
    let webpack = require('webpack')
    
    let merge = require('webpack-merge')
    let HtmlWebpackPlugin = require('html-webpack-plugin')
    let CleanWebpackPlugin = require('clean-webpack-plugin')
    let MiniCssExtractPlugin = require("mini-css-extract-plugin");
    
    // 基础配置
    let baseConfig = {
        entry: {
            'vue': ['vue']
        },
        output: {
            path: path.resolve(__dirname, 'dist'),
            filename: 'js/[name].[chunkhash].js'
        },
        module: {
            rules: [
                {
                    test: /\.css$/,
                    use: [{
                        loader: MiniCssExtractPlugin.loader,
                        options: {
                            publicPath: '../css/'
                          }
                    },"css-loader"]
                }
            ]
        },
        plugins: [
            new MiniCssExtractPlugin({
                filename: "[name].css",
                chunkFilename: "[id].css"
            }),
            new CleanWebpackPlugin(path.resolve(__dirname, 'dist')),
    
        ],
        optimization: { // js提取公共代码
            splitChunks: {
              chunks: 'async',
              minSize: 30000,
              maxSize: 0,
              minChunks: 1,
              maxAsyncRequests: 5,
              maxInitialRequests: 3,
              automaticNameDelimiter: '~',
              name: true,
              cacheGroups: {
                common: {
                  name: 'vue',
                  chunks: 'initial',
                  priority: 2,
                  minChunks: 2,
                },
              }
            }
          }
    }
    
    // 配置页面函数
    let generatePage = function ({
        title = '',
        entry = '',
        template = './src/index.html',
        name = '',
        chunks = []
    } = {}) {
        return {
            entry,
            plugins: [
                new HtmlWebpackPlugin({
                    chunks,
                    template,
                    title,
                    filename: name + '.html'
                })
            ]
        }
    }
    // 配置页面
    let pages = [
        generatePage({
            title: 'page A',
            entry: {
                'a': './src/pages/a'
            },
            name: 'a',
            chunks: ['vue', 'a']
        }),
        generatePage({
            title: 'page B',
            entry: {
                'b': './src/pages/b'
            },
            name: 'b',
            chunks: ['vue', 'b']
        }),
        generatePage({
            title: 'page C',
            entry: {
                'c': './src/pages/c'
            },
            name: 'c',
            chunks: ['vue', 'c']
        })
    ]
    // 通过merge来合成一个配置
    module.exports = pages.map(page => merge(baseConfig, page))
    
    // 模板 index.html
     <title><%= htmlWebpackPlugin.options.title %></title>
    
    目录.JPG

    相关文章

      网友评论

          本文标题:webpack多页面配置

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