webpack 发布 production




// 引入根路径  path 
let path = require('path');

// 引入 根目录
const root = process.cwd();

// 引入  vue-loadeer 
let { VueLoaderPlugin  } = require('vue-loader');

// 引入 处理 Html 的插件
let HtmlWebpackPlugin = require('html-webpack-plugin');

// 引入 css 的插件
let  MiniCssExtractPlugin= require('mini-css-extract-plugin');

// 引入 压缩 css  的插件
let  OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin')

// 定义配置
module.exports={
    // 模式
    // 发布模式
    mode:'production',

    // 解决问题
    resolve:{
        // 定义别名
        alias:{
            vue$:'vue/dist/vue.js',

            // 配置地址
            '@':path.join(root,'./src'),
            '@v':path.join(root,'./src/views'),
            '@c':path.join(root,'./src/compoments')
        },

        // 拓展名
        extensions:['.js','.vue'],
    },

    // 入口文件
    entry:'./src/main.js',

    // 发布
    output:{
        // '文件名'
        // 第一种添加  hash 指纹的方式
        // filename:'./static/[name].[hash:8].js',
        // 第二种方式  在插件中定义
        filename:'./static/[name].js',
        // 发布位置
        path:path.join(root,'./dzx/'),

        // 修改静态文件的相对位置
        publicPath:'../'
    },

    // 模块
    module:{
        // 定义加载机
        rules:[
            // vue 加载机
            {
                test:/\.vue$/,
                loader:'vue-loader',
                // 在以前的版本中,打包 css 还需要传递数据
                // use:[
                //     {
                //         loader:'vue-loader',
                //         options:{
                //             extractCSS:true
                //         }
                //     }
                // ]
            },
            // css 加载机
            {
                test:/\.css$/,
                use:[
                    'style-loader',
                    // 在样式文件的 style-loader 后添加 loader
                    MiniCssExtractPlugin.loader,
                    'css-loader'
                ]
            },
            // less
            {
                test:/\.less$/,
                use:[
                    'style-loader',
                    // 在样式文件的 style-loader 后添加 loader
                    MiniCssExtractPlugin.loader,
                    'css-loader',
                    'less-loader'
                ]
            },
            // scss
            {
                test:/\.scss$/,
                use:[
                    'style-loader',
                    // 在样式文件的 style-loader 后添加 loader
                    MiniCssExtractPlugin.loader,
                    'css-loader',
                    'sass-loader'
                ]
            }
        ]
    },
    // 定义插件
    plugins:[
        // 使用 vue-loader
        new VueLoaderPlugin(),

        // 处理 Html 的模板
        new HtmlWebpackPlugin({
            // 模板的位置
            template:'./public/index.html',
            // 发布的位置
            filename:'./views/index.html',
            // 添加指纹
            hash:true
        }),

        // 定义 css 文件的发布位置
        new MiniCssExtractPlugin({
            filename:'./static/style.css'
        }),

        // 压缩 css  代码
        new OptimizeCssAssetsWebpackPlugin()
    ],

    // 优化 拆分文件
    optimization:{
        // 拆分文件
        splitChunks:{
            cacheGroups:{
                lib:{
                    name:'lib',
                    chunks:'initial',
                    test:/node_modules/
                }
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大闸蟹~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值