核心

Entry:入口

  1. //多页应用分离 库与代码分离
  2. const config = {
  3. entry: {
  4. app: './src/app.js',
  5. vendors: './src/vendors.js'
  6. }
  7. };

Output:输出

  1. {
  2. output: {
  3. filename: '[name].js',
  4. path: __dirname + '/dist'
  5. }
  6. }

Loder:模块的源代码进行转换

  1. module: {
  2. rules: [
  3. { test: /\.css$/, use: 'css-loader' },
  4. { test: /\.ts$/, use: 'ts-loader' }
  5. ]
  6. }
  7. }

Plugins:插件

  1. plugins: [
  2. new webpack.optimize.UglifyJsPlugin(),
  3. new HtmlWebpackPlugin({template: './src/index.html'})
  4. ]

Mode:模式

production//生产模式
development//开发模式
//通过 process.env.NODE_ENV 判断

基本的开发环境

//webpack.config.js
//绝对路径
const { resolve } = require('path');
//css分离
const MiniCssextractPlugin = require('mini-css-extract-plugin');
//html
const HtmlWebpackPlugin = require('html-webpack-plugin');
const DEVenv = process.env.NODE_ENV === 'development';
//压缩css
const optimizecsswebpackplugin = require('optimize-css-assets-webpack-plugin');
module.exports = {
    mode: 'development',
    entry: './src/app.js',
    output: {
        filename: 'build.js',
        path: resolve(__dirname, 'dist')
    },
    devServer: {
        contentBase: './src',
        hot:true
    },
    module: {
        rules: [
            {
                test: /\.s?[c]ss$/i,
                use: [
                    //创建style 将样式放入
                    DEVenv ? 'style-loader' : MiniCssextractPlugin.loader,
                    //将css 整合到js
                    'css-loader',
                    'sass-loader',
                ]
            },
            {
                // "eslintConfig":{
                //     "extends":"airbnb-base"
                //   }
                //eslint-config-airbnb-base eslint eslint-plugin-import.
                test: /\.js$/,
                exclude: /node_modules/,
                loader: 'eslint-loader',
                options: {
                    fix: true
                }

            }
        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            title: 'dev',
            template: './src/index.html',
            minify: {
                //折叠
                collapseWhitespace: true,
                //移除注释
                removeComments: true
            }
        }),
        new MiniCssextractPlugin({
            filename: 'css/style.css'
        }),
        new optimizecsswebpackplugin()
    ],
}