图片.png
图片.png
图片.png

webpack.config.js

  1. yarn add node-notifier -D
  2. yarn add friendly-errors-webpack-plugin -D
  3. yarn add speed-measure-webpack-plugin -D
  4. yarn add webpack-bundle-analyzer -D


const path  = require("path");
const FriendlyErrorsWebpackPlugin= require("friendly-errors-webpack-plugin");
const notifier = require('node-notifier');
const SpeedMeasureWebpackPlugin = require("speed-measure-webpack-plugin");
const smw = new SpeedMeasureWebpackPlugin();
const { BundleAnalyzerPlugin } = require("webpack-bundle-analyzer");
const HtmWebpackPlugin = require("html-webpack-plugin");
const webpack = require('webpack');
module.exports = smw.wrap({
    mode:"development",//配置的模式
    devtool:"source-map",//调试工具的选择
    entry:"./src/index.js",
    output:{
        path:path.resolve(__dirname,"dist"),
        filename:'[name].js'  
    },
    resolve:{
        extensions:[".js",".vue",".json"],  //文件越多的放在最前面 
          //指定后可以不用在require或require的时候添加扩展名
          //查找的时候会尝试添加扩展名的匹配
        alias:{//配置别名
            bootstrap:path.resolve(__dirname,"node_modules/bootstrap/dist/css/bootstrap.css")
        }
    },
    externals:{
          //免打包加快构建速度 不影响在全局的使用
        jquery:'jQuery' //把jquery变成window.jQuery
    },
    module:{
        rules:[
            {
                test:/\.js$/,
                include:path.resolve(__dirname,"src"),
                // exclude:/node_modules/,
                use:[
                    {
                        loader:"babel-loader",
                        options:{
                            cacheDirectory:true
                        }
                    }
                    // "cache-loader",
                    // "babel-loader"
                ]    
            },
            {
                test:/\.css$/,
                use:[
                    "style-loader",
                    "css-loader"
                ]
            }
        ]
    },
    plugins:[
       new  FriendlyErrorsWebpackPlugin({
           //运行错误的提醒
           onErrors:(servertity,errors)=>{
               let error = errors[0];
               notifier.notify({
                   title:"webpack编译失败",
                   message:servertity+":"+error.name,
                   subtitle:error.file || ""
               })
           }
       }),
       new BundleAnalyzerPlugin({
           analyzerMode:"disabled",//不启动展示打包报告的http服务器
           generateStatsFile:true //要生成states.json文件
       }),
       new HtmWebpackPlugin({
           template:"./src/index.html"
       }),
       new webpack.IgnorePlugin({
           resourceRegExp:/^\.\/locale$/,//资源正则 (语言包)
           contextRegExp:/moment$/  //上下文  目录正则 哪一个第三方包
       })
    ]
})