完整教程:Webpack5 第四节

news/2025/10/25 22:20:52/文章来源:https://www.cnblogs.com/ljbguanli/p/19166059

完整教程:Webpack5 第四节

变量区分打包环境

为什么我们要区分开发环境呢?

这是因为不同的开发环境下需要不同的打包策略,生成环境下需要压缩,但是可读性比较差,在开发环境下一般是不开启的。而且开发环境和生成环境的调试接口是不一样的。

变量区分打包环境

在package.json配置文件中配置打包命令

"scripts": {"test": "echo \"Error: no test specified\" && exit 1","build": "webpack","prod": "webpack --mode production"},

"prod": "webpack --mode production"

使用npm run prod 即可执行成功,生产环境打包

配置文件区分打包环境

合并插件 webpack-merge可以将公共配置文件分别与两个环境的配置文件合并

安装插件

cnpm i webpack-merge -D
  • 开发环境配置文件
// webpack.dev.config.js
const {merge} = require('webpack-merge')
const baseWebpackConfig=require('./webpack.base.conf')
const devWebpackConfig=merge(baseWebpackConfig,{// 开发环境的配置
})
module.exports=devWebpackConfig
  • 生产环境配置文件
// webpack.prod.config.js
const {merge} = require('webpack-merge')
const baseWebpackConfig=require('./webpack.base.conf')
const prodWebpackConfig=merge(baseWebpackConfig,{// 生产环境的配置
})
module.exports=prodWebpackConfig


使用命令进行压缩

npx webpack --config webpackConfig\webpack.dev.config.js

修改打包的命令,简化操作

使用 npm run buildnpm run prod 即可执行成功

环境区分全局变量

为项目注入全局变量,不同环境注入不同的接口地址

// webpack.dev.config.js
const webpack = require('webpack')
plugins:[new webpack.DefinePlugin({API_BASE_URL:JSON.stringify('https://apidev.xdclass.com')})
]

获取接口地址

console.log(API_BASE_URL)

代码分类 - 多入口打包

我们在工作时会运用带多页面分类,我们需要将代码分类到不同打包后的文件中即bundle文件,而且可以按需加载或并行加载这些文件,来获取更小的bundle,控制资源加载的优先级,降低加载空间。

分类方法:

多入口打包,抽离出公共文件

optimization.splitChunks.chunks:all

配置

// webpack.config.js
entry: {index: './src/index.js',mine: './src/mine.js',
},
output: {filename: '[name].bundle.js',
},
HtmlWebpackPlugin({chunks:['index']
})
HtmlWebpackPlugin({chunks:['mine']
})

代码分离 - 抽离出公共代码防止重复打包

为了将多个页面重复引入的模块抽离成公共的模块,避免重复打包,减少包体积。

配置

optimization: {splitChunks: {chunks: 'all',},
},

可视化工具安装

cnpm install webpack-bundle-analyzer -D

可视化工具配置

// webpack.config.js
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
module.exports = {plugins: [new BundleAnalyzerPlugin()]
}

代码分离—动态导入

按需加载(懒加载):默认不加载,只有页面展示或者事件触发后才加载。

指定打包后的文件名称

webpackChunkName:'xxx'

预加载:先等待其他资源加载完成之后再加载

指定需要预加载的内容

webpackPrefetchz:true

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/946470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vlan batch { vlan-id1 [ to vlan-id2 ] } 概念及题目 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

完整教程:ACWing08:高精度专题

完整教程:ACWing08:高精度专题pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…

2025.10.25总结

过完软考的理论部分,接下来有题型讲解和刷题部分,看视频的话还需要10h+,除此之外还需要练整套题型,上午题和下午题都要练。

ABC429

恍惚间已经好久没写 ABC 了。 最好的一次,rk300,\(6\) 题 \(2\) 罚时。 A - Too Many Requests 模拟即可,时间复杂度为 \(O(n)\)。点击查看代码 #include <iostream> #include <cstdio> using namespac…

使用本地git命令行拉取github.com软件仓库public项目

使用本地git命令行拉取github.com软件仓库public项目2025-10-25 22:10 flyfish163 阅读(0) 评论(0) 收藏 举报1、本地机器安装git客户端 对于windows机器来说,下载一个Git exe安装即可,如Git-2.49.0-64-bit.exe …

10.25 CSP-S模拟39/2025多校冲刺CSP模拟赛8 改题记录

HZOJ 写在前面 信心场?终于踩线300pts了(虽然重测后差了点)。我竟然还有今天,场切3道。虽然有数据水的原因但是那只有T3。然后现在的状态是饿饿饿饿饿饿,不知道干啥,遂先把这个写了。《Lullaby》祝今夜好梦 기다…

MySQL-主从复制 - 指南

MySQL-主从复制 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &quo…

嵌入子流形

嵌入子流形 嵌入子流形的定义 由于在流形优化中,一般考虑在有限维线性空间上的流形,因此如未加特殊申明,以下所考虑的流形都是指有限维线性空间 \(\mathbb{R}^n\) 的流形,且是光滑流形。 这一节考虑嵌入子流形,这…

玩转单片机之智能车小露——数字与字符串的转换与打印

在 玩转单片机之智能车小露——通过UART为单片机增加TTY终端 中我们在TTYEchoNumber中使用 printf 函数将数字输出到串口。其实数字很多时候都不是以数的形式表示的,几乎所有的输入和显示环节数字都是以字符串的形式来…

数据采集作业1 102302111 海米沙

作业一 1)用requests和BeautifulSoup库方法定向爬取给定网址(http://www.shanghairanking.cn/rankings/bcur/2020 )的数据,屏幕打印爬取的大学排名信息的实验 输出信息: 排名 学校名称 省市 学校类型 总分 …

ABC429(C,D,E)

C 思路:容斥原理 开桶统计元素个数 求$ A_i,A_j,A_k (i \lt j \lt k)$ 其中两个相等的元组数量: 若\(A_i\)有\(k\)个\(A_i\)和其他一个相等:\(ans = (k-1) \times (n-i-(k-1))\) 其他两个相等:先算出所有两两相等的…

列表,集合,字典的增、删、查、改方法对比

在Python中,列表(List)、集合(Set)和字典(Dict)是三种常用的数据结构,它们在增、删、查、改操作上各有特点。以下是它们的详细对比:1. 列表(List) 列表是有序的可变序列,支持重复元素。操作 方法 示例 说明…

linux磁盘管理-RAID介绍 - 详解

linux磁盘管理-RAID介绍 - 详解2025-10-25 21:54 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !importa…

详细介绍:语义网络(Semantic Net)对人工智能中自然语言处理的深层语义分析的影响与启示

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2023.2.24 操作系统期末考试回忆 山科 山东科技大学

5个简答题 1个6分30分操作系统的四个基本特征是什么?最基本特征是什么比较说明进程和程序的区别有哪些?列举几个操作系统中的时间换空间 空间换时间的例子SPOOLing 的组成,工作过程,以共享打印机为例某文件系统为一…

线段上随机取n个点的最大距离期望

Problem 在长为 $ a $ 的线段上独立地选取 $ n $ 个点($ n \geq 2 $),记相距最远的两点的距离为 $ X $,求 $ E(X) $。方法一:定义求解 记 $ A $ 为 $ X = t \(,\) B $ 为剩余 $ n-2 $ 个点在最远的两点间,则有 …

MusicFree 音乐

MusicFree是由大佬猫头猫开发的一款免费、开源的本地音乐播放器,同时支持Android、Windows、MacOS、Linux这几个客户端,很强大!MusicFree安装后就是一个纯粹的本地音乐播放器,但可以通过配置「插件」地址实现定制化…

P10老板一句‘搞不定就P0’,15分钟我用Arthas捞回1000万资损 - 指南

P10老板一句‘搞不定就P0’,15分钟我用Arthas捞回1000万资损 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &qu…

RuoYi-Cloud-Plus 数据权限实现原理解析

RuoYi-Cloud-Plus 数据权限实现原理解析 什么是数据权限? 数据权限是控制用户能够访问哪些数据的权限机制。在实际业务场景中,我们经常遇到这样的需求:普通员工只能查看自己创建的数据 部门经理可以查看本部门所有员…

详细介绍:JavaScript学习笔记(十五):ES6模板字符串使用指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …