webpack

自动引入js文件
html-webpack-plugin -Dconst path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
    entry: './src/index.js',
    output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'dist'),
        clean: true  //清理dist
    },
    mode: 'none',
    plugins: [
        new HtmlWebpackPlugin({
            template: './index.html',   //模板基础
            filename: 'app.html',       //定义自动生成的html文件名
            inject: 'body'
        })
    ]
}使用mode模式
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
    entry: './src/index.js',
    output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'dist'),
        clean: true  //清理dist
    },
    mode: 'development',
    devtool: 'inline-source-map',   //解决源代码与打包后的代码不对应问题
    plugins: [
        new HtmlWebpackPlugin({
            template: './index.html',   //模板基础
            filename: 'app.html',       //定义自动生成的html文件名
            inject: 'body'
        })
    ]
}source map解决问题:devtool: 'inline-source-map', //解决源代码与打包后的代码不对应问题
实时侦测js文件变化:npx webpack --watch
解决浏览器实时重新加载: npm install webpack-dev-server -D
执行命令npx webpack-dev-server
配置文件添加: devServer: { static: './dist' }
资源模块介绍:
   {
                test: /\.(css|less)$/,
                use: ['style-loader', 'css-loader', 'less-loader']
            }安装css-loader:
安装:style-loader

安装less-loader:

安装mini-css-extract-plugin -D实现抽取分离

安装压缩css的包:
安装csv和xml的loader配置文件:

自定义项目json模块的parser

babel-loader的安装


代码分离:
entry入口点(方法一)
 entry: {
        index: './src/index.js',
        another: './src/another.js'
    },
output: {
        filename: '[name].bundle.js',    //多文件名
        path: path.resolve(__dirname, 'dist'),
        clean: true,  //清理dist
        assetModuleFilename: 'images/[contenthash][ext]'   //统一自定义文件名和路径
    },防止重复(2种)
方法一
 index: {
            import: './src/index.js',
            dependOn: 'shared'
        },
        another: {
            import: './src/another.js',
            dependOn: 'shared'
        },
        shared: 'lodash'方法二
  entry: {
        index: './src/index.js',
        another: './src/another.js'
    },
 optimization: {
        splitChunks: {
            chunks: 'all'
        }
    }动态加载
在方法二的基础上直接引入
function getComponent() {
    return import('lodash').then(({ default: _ }) => {
        const element = document.createElement('div')
        element.innerHTML = _.join(['hello', 'webpack'], ' ')
        return element
    })
}
getComponent().then(element => {
    document.body.appendChild(element)
})拆分生产环境和开发环境
npm i terser-webpack-plugin -D(传参区分打包)
拆分配置文件
  splitChunks: {
            cacheGroups: {
                vendor: {                       //将所有第三方库提取vendor文件夹
                    test: /[\\/]node_modules[\\/]/,     //匹配node_modules中的文件
                    name: 'vendors',
                    chunks: 'all'
                }
            }
        }提取文件深合并配置
webpack
        http://localhost:8090//archives/webpack