Eric小屋

  • Webpack 打包工具
  • 使用Webpack
  • 修改Webpack打包入口 出口
  • 打包Webpack
  • 自动生成html文件
  • 打包CSS代码
  • 优化 - 提取CSS代码
  • 优化 - 压缩过程
  • 打包less代码
  • 打包图片
  • 首页
  • 学习笔记
    • JAVA
    • Spring
    • Node.js
    • Vue
  • 学习文档
  • 案例项目
  • 课程笔记
  • 问题解决
登录

Webpack 打包工具

  • Eric
  • 2023-12-14
  • 0

Webpack 打包工具

使用Webpack

步骤:
1、新建并初始化项目,编写业务源代码

npm i webpack webpack-cil --save-dev

2、下载 webpack webpack-cli 到当前项目中(版本独立),并配置局部自定义命令

"scripts":{
    "build":"webpack"
},

3、运行打包命令,自动产生 dist 分发文件夹(压缩和优化后,用于最终运行的代码)

npm run build

修改Webpack打包入口 出口

Webpack 配置:影响 Webpack 打包过程和结果
步骤:
1、项目根目录,新建 webpack.config.js 配置文件

const path = require('path')

module.exports = {
    entry:path.resolve(__dirname,"src/login/index.js"),
    output:{
        path:path.resolve(__dirname,'dist'),
        filename:'.login/index.js'
    }
}

2、导出配置对象,配置入口,出口文件的路径
3、重新打包观察
注意:只有和入口产生直接/间接的引入关系,才会被打包

打包Webpack

步骤:
1、准备用户登录页面
2、编写核心 JS 逻辑代码
3、打包并手动复制网页到 dist 下,引入打包后的 js,运行
核心:Webpack 打包后的代码,作用在前端网页中使用

1702602487071

自动生成html文件

插件 html-webpack-plugin: 在 Webpack 打包时生成 html 文件
步骤:
下载 html-webpack-plugin 本地软件包

npm i html-webpack-Plugin --save-dev

配置 webpack.config.js 让 Webpack 拥有插件功能

const HtmlWebpackplugin = require('html-webpack-plugin')

module.exports = {
    //...
    plugins:[
        new HtmlWebpackPlugin = require('hhtml-webpack-plugin')

        module.exports = {
        new HtmlWebpackPlugin({
        template:'./public/login.html',
        filename:'./login/index.html'
        })
        }
    ]
}

重新打包观察效果

打包CSS代码

加载器 css-loader:解析 css 代码
加载器 style-loader:把解析后的 css 代码插入到 DOM
步骤:
1、准备 css 文件代码引入到 src/login/index.js 中(压缩转译处理等)
2、下载 css-loader 和 style-loader 本地软件包

npm i css-loader style-loader --save-dev

3、配置 webpack.config.js 让 Webpack 拥有该加载器功能

moduule.exports = {
    //...
    module:{
        rules:[
            {
                test:/\.css$/i,
                use:["style-loader","css-loader"],
            },
        ],
    },
};

4、打包后观察效果

注意:Webpack 默认只识别 js 代码

优化 - 提取CSS代码

插件 mini-css-extract-plugin:提取 css 代码
步骤:
1、下载 mini-css-extract-plugin 本地软件包

npm install --save-dev mini-css-extract-plugin

2、配置 webpack.config.js 让 Webpack 拥有该插件功能

const MiniCssExtractPlugin = require('mini-css-extract-plugin')

module.exports = {
    //...
    module:{
        rules:[
            {
                test:/\.css$/i,
                use:[MiniCssExtractPlugin.loader,"css-loader"],
            },
        ],
    },
    plugin:[
        //...
        new MiniCssExtractPlugin()
    ]
};

3、打包后观察效果

注意:不能和 style-loader 一起使用
好处:css 文件可以被浏览器缓存,减少 js 文件体积

优化 - 压缩过程

问题:css 代码提取后没有压缩
解决:使用 css-minimizer-webpack-plugin 插件
步骤:
1、下载 css-minimizer-webpack-plugin 本地软件包

npm install css-minimizer-webpack-plugin --save-dev

2、配置 webpack.config.js 让 webpack 拥有该功能

const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");

module.exports = {
    //...
    // 优化
    optimizertion:{
        //最小化
        minimizer:[
            //在webpack@5中,你可以用'...'语法来扩展现有的minimizer
            '...',
            new CssMinimizerPlugin(),
        ],
    }
};

3、打包重新观察

打包less代码

加载器 less-loader:把 less 代码编译为 css 代码
步骤:
1、新建 less 代码(设置背景图)并引入到 src/login/index.js 中
2、下载 less 和 less-loader 本地软件包

npm i less less-loader --save-dev

3、配置 webpack.config.js 让 Webpack 拥有功能

//...
module.exports = {
    //...
    module:{
        rules:[
            //...
            {
                test:/\.less$/i,
                use:[MiniCssExtractPlugin.loader,"css-loader","less-lloader"]
            }
        ]
    }
}

4、打包后观察效果

注意:less-loader 需要配合 less 软件包使用

打包图片

资源模块:Webpack5 内置资源模块(字体,图片等)打包,无需额外 loader
步骤:
配置 webpack.config.js 让 Webpack 拥有打包图片功能

module.exports = {
    //...
    module:{
        rules:[
            //...
            {
                test:/\.(png|jpg|jpge|gif)$/i,
                type:'asset',
                generator:{
                    filename:'assets/[hash][ext][query]'
                }
            }
        ]
    }
}
  • 占位符 【hash】对模块内容做算法计算,得到映射的数字字母组合的字符串

  • 占位符 【ext】使用当前模块原本的占位符,例如:.png / .jpg 等字符串

  • 占位符 【query】保留引入文件时代码中查询参数(只有 URL 下生效)

    打包后观察效果和区别
    注意:判断临界值默认为 8KB
    大于 8KB 文件:发送一个单独的文件并导出 URL 地址
    小于 8KB 文件:导出一个 data URI(base64字符串)

联系作者:2572976830@qq.com
© 2025 Eric小屋
Theme by Wing
京ICP备2023032157号 京公网安备11011402053616号
  • {{ item.name }}
  • {{ item.name }}