当前位置: 首页 > news >正文

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.dtcms.com/a/415410.html

相关文章:

  • 设计网站公司力荐亿企邦松江新城投资建设发展有限公司网站
  • 家用电器:从解放双手到智能生活的变革者
  • 上海网站建设大概多少钱WordPress允许用户修改评论
  • 如何给网站做seo优化用网站做宣传的方案
  • 使用神经网络预测天气
  • 青海省建设工程信息网站最近十大新闻
  • 建设银行网站显示404企业活动网站创意案例
  • XAMPP下载安装教程(附下载链接,图文并茂)
  • 杭州网站建设浙江搜搜网站收录
  • Redis-分布式锁-redission原理
  • 博州住房和城乡建设局网站wordpress搭建官网
  • 做报废厂房网站怎么做网站架设的结构
  • 海口h5建站西地那非片能延时多久有副作用吗
  • 从知乎403拦截到成功采集:网页抓取实战
  • wordpress建立购物网站seo综合查询
  • 极简 Go 语言教程:从 Java 开发者视角 3 小时入门实战
  • 济宁网站建设第一品牌深圳十大品牌策划公司
  • 破解大语言模型的无失真水印
  • Android开发-Fragment
  • 等额本息年利率反推方法
  • 电商网站建设需要开原网站开发
  • 网站推广服务合同中国建筑集团有限公司电话
  • 全国金融许可证失控情况数据(邮政储蓄网点 / 财务公司等)2007.7-2025.7
  • 基于STM32与influxDB的电力监控系统-5
  • 太原做app网站建设推广普通话奋进新征程宣传语
  • 【Day 65】Linux-ELK
  • 怎么免费建立自己的网站平台站长之家
  • 韩国网站购物页游最火的游戏
  • 易语言如何做验证系统官方网站推广注册app赚钱平台
  • 雅安建设机械网站百度搜索风云榜排行榜