webpack生产环境的配置

17 篇文章 0 订阅
15 篇文章 0 订阅
const { resolve } = require("path");
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')


//定义nodejs环境变量:决定使用browserslist的那个环境
process.env.NODE_ENV = 'production'

//复用css的loader
const commonCssLoader = [
    MiniCssExtractPlugin.loader,
    'css-loader',
    {
        //需要在package.json中的browserslist里面的配置,通过配置加载指定的css兼容性样式
        loader: 'postcss-loader',
        options: {
            postcssOptions: {
                ident: 'postcss',
                //打包后有兼容性样式代码
                plugins: [
                    require('postcss-preset-env')
                ]
            }
        }
    }
]

module.exports = {
    entry: './src/js/index.js',
    output: {
        filename: 'js/built.js',
        path: resolve(__dirname, 'build')
    },
    module: {
        rules: [
            {
                test: /\.css$/,
                use: [...commonCssLoader]
            },
            {
                test: /\.css$/,
                use: [...commonCssLoader, 'less-loader']
            },
            {
                test: /\.js$/,
                exclude: /node-modules/,
                //优先执行
                enforce: 'pre',
                //js语法检查
                loader: 'eslint-loader',
                options: {
                    fix: true
                }
            },
            //js兼容性处理
            {
                test: /\.js$/,
                exclude: /node-modules/,
                loader: 'babel-loader',
                options: {
                    //预设:指示babel做怎样的兼容性处理
                    presets: [[
                        '@babel/preset-env', {
                            //按需加载
                            useBuiltIns: "usage",
                            //指定corejs的版本
                            corejs: {
                                version: 3
                            },
                            //指定兼容性具体到哪个版本的浏览器
                            targets: {
                                chrome: "60",
                                firefox: "60",
                                ie: "9",
                                safari: "10",
                                edge: "17"
                            }
                        }
                    ]]
                }
            },
            {
                test: /\.(jpg|png|gif)/,
                loader: 'url-loader',
                options: {
                    limit: 8 * 1024,
                    name: '[hash:10].[ext]',
                    outputPath: 'imgs',
                    esModule: false
                }
            },
            {
                test: /\.html$/,
                //html-withimg-loader 专门处理html中的img图片的(负责引入这个图片,从而能被url-loader进行处理)
                loader: 'html-withimg-loader'
            },
            {
                //排除html/js/css资源
                exclude: /\.(css|js|html|less|png|jpg|gif)/,
                loader: 'file-loader',
                options: {
                    outputPath: 'media',
                    name: '[hash:10].[ext]'
                }
            }
        ]
    },
    plugins: [
        new MiniCssExtractPlugin({
            filename: 'css/built.css'
        }),
        new OptimizeCssAssetsWebpackPlugin(),
        new HtmlWebpackPlugin({
            template: './src/index.html',
            minify: {
                //移除空格
                collapseWhitespace: true,
                //移除注释
                removeComments: true
            }
        })

    ],
    mode: 'production'
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值