webpack

自动引入js文件

html-webpack-plugin -D
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: '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
作者
林丽专
发布于
2025年03月17日
许可协议