alt

1.出入口

// 三种方式
// entry: './src/main.js',
entry: path.resolve(__dirname, '../src/main.js'), //推荐
// entry: {
//     app: './src/main.js'
// },
    

output: {
    // 打包到哪里
    // 0.0 配置出口的时候必须使用绝对路径
    path: path.resolve(__dirname, '../dist'),
    // 打包后的名字  bundle(一束、一捆)
    // filename: 'bundle.js',
    // 格式化名字


   // [chunkhash] 生成hash字符串的方式:每次打包,webpack根据当前chunk进行计算,如果发现有代码 变化,
   // 就生成新的hash名;如果当前chunk没有代码变化,生成的hash名和上一次一样。
   filename: 'js/[name].[chunkhash].js',
   // 自动清除dist目录

   // v4 使用 clean-webpack- plugin
   clean: true

},

2.plugins

// 所有的webpack plugin 都是class类
// 插件:是webpack中些用于扩展的小插件
plugins: [ 
    // 把 webpack 编译的 js 代码和 html 组合起来
    new HtmlWebpackPlugin({
    // 自定义title
    title: 'DP7',
    template: path.resolve(__dirname, '../public/index.html'),
    // 打包后的名字
    filename: 'index.html',


    inject: 'body',
    favicon: path.resolve(__dirname, '../public/favicon.ico')
	}),
    // 进度条
    new webpack.ProgressPlugin(),
],

3.module

// loaders用于加载各种各样的文件模块,并使用相应的编译器对这些模块进行编译
// module 配置对各种各样的模块进行编译的规则=> loaders

// 官方说法:loader 让 webpack 能够去处理那些非 JavaScript 文件(webpack 自身只理解 JavaScript
    module: {
        rules: [
            //第一条规则: 当webpack运行时, 如果遇到以.js / .ts为后缀的文件时, 
            // webpack 就使用babel - loader来加载这种文件 然后交给Babel编译器(@babel/core、 @babel/preset -env)进行编译转换,最终得到ES5代码。
            // 同理 
            {
                // .js 或者 .ts 结尾
                test: /\.(js|ts)$/,
                // 使用Babel加载ES2015+代码并将其转换为ES5
                use: ['babel-loader']
            },
            {
                test: /\.vue$/,
                use: ['vue@loader']
            },
            {
                test: /\.scss$/,
                use: [
                    'vue-style-loader',
                    'css-loader',
                    'sass-loader'
                ]
            }
        ]
    }

1.html-webpack-plugin

该插件将为你生成一个 HTML5 文件, 在 body 中使用 script 标签引入你所有 webpack 生成的 bundle(js文件)

//demo
module.exports = {
  entry: 'index.js',
  output: {
    path: path.resolve(__dirname, './dist'),
    filename: 'index_bundle.js',
  },
  // 把解析后的js文件  进入到html文件中
  plugins: [new HtmlWebpackPlugin()],
};

2.terser-webpack-plugin

最小化你的js代码 进行压缩 (用于生产环境)

optimization: {
    minimize: true,
    minimizer: [new TerserPlugin()]
}

3.devtool

选择一种 source map 格式来增强调试过程