Webpack mode三种模式配置说明(production,development,none)

2023-05-16

我们都知道webpack的配置文件 webpack.config.js 文件中 mode 表示webpack当前的环境以及对不同的环境的配置。虽然官方文档写明了三种不同的模块的配置,但是没有具体说明是什么意思,我就注释一下对应的模块到底进行了什么操作。

development(开发模式)

下面是从官方上得到的开发模式的全部配置,

// webpack.development.config.js
module.exports = {
+ mode: 'development',		// mode的默认配置就是production,就是说如果你不配置mode默认值是生产模式
- devtool: 'eval',			// 控制如何生成source-map,默认配置是不生成source-map,eval值是在bundle文件中每个模块都使用 eval() 执行
- cache: true,				// 缓存生成的 webpack 模块和 chunk,默认只有在watch模式下启用
- performance: {
-   hints: false			// 配置如何展示性能提示。例如,如果一个资源超过 250kb,webpack 会对此输出一个警告来通知你。值有:false | "error" | "warning",此属性默认设置为 "warning"。
- },
- output: {
-   pathinfo: true			// 告知 webpack 在 bundle 中引入「所包含模块信息」的相关注释。此选项在 development 模式时的默认值是 true,而在 production 模式时的默认值是 false。
- },
- optimization: {			// 
-   namedModules: true,		// 告知 webpack 使用可读取模块标识符(readable module identifiers),来帮助更好地调试。webpack 配置中如果没有设置此选项,默认会在 mode development 启用,在 mode production 禁用。与下面new webpack.NamedModulesPluginn()插件效果相同。
-   namedChunks: true,		// ???告知 webpack 使用可读取 chunk 标识符(readable chunk identifiers),来帮助更好地调试。webpack 配置中如果没有设置此选项,默认会在 mode development 启用,在 mode production 禁用。
-   nodeEnv: 'development',	// nodeEnv使用DefaultPlugin将字符串设置给process.env.NODE_ENV,除非设置为false,默认值是mode的值
-   splitChunks: {
-     hidePathInfo: false,	// ???
-     minSize: 10000,		// 生成chunk的最小大小(以字节为单位),默认为30000
-     maxAsyncRequests: Infinity,	// 按需加载时并行请求的最大数量,默认为5
-     maxInitialRequests: Infinity,	// 入口的最大并行请求数。默认为3
-   },
- },
- plugins: [
-   new webpack.NamedModulesPlugin(),	// 过时,webpack4中建议使用optimization.namedModules来实现相同的效果
-   new webpack.NamedChunksPlugin(),	// 过时,webpack4中建议使用optimization.namedChunks来实现相同的效果
-   new webpack.DefinePlugin({ "process.env.NODE_ENV": JSON.stringify("development") }),	// 与上面的nodeEnv参数效果一样
- ]
}

production(生产模式)

待补充

devtool和sourcemap相关介绍

JavaScript Source Map 详解(阮一峰的网络日志)
这个文章对source map的由来,生成map文件都进行了详细的说明。

Webpack中的sourcemap
这篇文章则重点是webpack上的sourcemap的生成,分析了devtool配置项目中的eval,inline,module,cheap关键字对sourcemap生成的影响,好文章,强烈推荐!

就我在上面文章基础上的理解是:eval确实是一种不同于生成.map文件的源码映射方法,它是一种映射在源码和压缩代码中间的方法,它映射的代码是经过webpack处理,但是又能看出源码一定模样的代码,虽然行数对应有问题,但是确定问题代码位置一般没有问题。适用于模块是自己写的项目中使用,如果模块不是自己写就不要使用eval相关模式生成的sourcemap了,找错代码更危险。

下面给出在chrome浏览器访问的eval源码的文件与实际源码的区别:

// eval文件中的源码
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return printMe; });
function printMe() {
    console.log("I get called from printfffff.js");
    // console.error("I get called from print.js");
}

// 实际的源码
export default function printMe() {
    console.log("I get called from printfffff.js");
    // console.error("I get called from print.js");
}

output中的pathinfo参数是否开启的区别

下面依次是output中pathinfo为false和true时生成的bundle文件中的差异:bundle文件中包含的模块(文件)的注释信息,主要是文件对外暴露的方法名。
output中pathinfo为false时output中pathinfo为true时

optimization.namedModules参数是否开启的区别

optimization.namedModules参数主要是控制 webpack 使用可读取模块标识符(readable module identifiers),来帮助更好地调试代码。目前在官方的例子上是使用在模块热替换这个功能中打印热替换时对应替换模块的id转成对应文件的名字。

下面是对应参数开启和关闭时效果的例子:
optimization.namedModules为false
optimization.namedModules为true
如果有其它使用的场景,欢迎交流,共同提高。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Webpack mode三种模式配置说明(production,development,none) 的相关文章

随机推荐

  • 排列组合公式

    注 xff1a 排列与元素的顺序有关 xff0c 组合与顺序无关 xff0e 如231与213是两个排列 xff0c 2 xff0b 3 xff0b 1的和与2 xff0b 1 xff0b 3的和是一个组合 xff0e 1 xff0e 排列
  • Mybatis初始化机制

    对于任何框架而言 xff0c 在使用前都要进行一系列的初始化 xff0c MyBatis也不例外 本章将通过以下几点详细介绍MyBatis的初始化过程 1 MyBatis的初始化做了什么 2 MyBatis基于XML配置文件创建Config
  • ValidationSummary控件

    ValidationSummary控件用于在页面中的一处地方显示所有验证错误的列表 这个控件在使用大的表单时特别有用 如果用户在页面底部的表单字段中输入了错误的值 xff0c 那么这个用户可能永远也看不到错误信息 不过 xff0c 如果使用
  • 数据特征分析——概述

    一 6个基础分析思路 xff1a 1 分布分析 2 对比分析 3 统计分析 4 帕累托分析 5 正态性检验 6 相关性分析 二 分布分析 分布分析 xff1a 研究数据的分布特征和分布类型 xff0c 分定量数据 定性数据区分基本统计量 三
  • Filebeat 6.0 把日志直接输入到ES中如何自定义index

    临时搭建了一套EFK xff08 elasticsearch xff0c filebeat xff0c kibana xff09 xff0c filebeat 6 0 默认的index 是filebeat 43 时间 xff0c 这样无法满
  • 人在异乡

    为什么到了上海五年 xff0c 还是没有归属感 to be continued
  • 怎么求矩阵对应的基

    怎么求矩阵对应的基呢 xff1f 对矩阵做初等行变换 xff0c 化为上三角形 或 对角型 xff0c 主对角元素不为0的列即为该矩阵的一组基 A 61 这个矩阵对应的一个基 为 其实 xff0c 将第二行的 1 倍加到第一行上 xff0c
  • javascript弹出窗口代码

    1 最基本的弹出窗口代码 lt SCRIPT LANGUAGE 61 34 javascript 34 gt lt window open 39 page html 39 gt lt SCRIPT gt 因为着是一段javascripts代
  • 大规模异步新闻爬虫【5】:网页正文的提取

    前面我们实现的新闻爬虫 xff0c 运行起来后很快就可以抓取大量新闻网页 xff0c 存到数据库里面的都是网页的html代码 xff0c 并不是我们想要的最终结果 最终结果应该是结构化的数据 xff0c 包含的信息至少有url xff0c
  • 网络安全态势可视化

    导语 网络态势可视化技术作为一项新技术 xff0c 是网络安全态势感知与可视化技术的结合 xff0c 将网络中蕴涵的态势状况通过可视化图形方式展示给用户 xff0c 并借助于人在图形图像方面强大的处理能力 xff0c 实现对网络异常行为的分
  • 滚动窗口

    本页目录 语法案例 滚动窗口 xff08 TUMBLE xff09 将每个元素分配到一个指定大小的窗口中 通常滚动窗口有一个固定的大小 xff0c 并且不会出现重叠 例如 xff1a 如果指定了一个5分钟大小的滚动窗口 xff0c 无限流的
  • Qt5&OpenCV3 UDP协议实现实时视频传输与通信

    打算在树莓派上挂载摄像头 xff0c 通过WIFI模块传输到上位机 局域网内带宽不是问题 xff0c 为了保证实时性 xff0c 也没有必要进行复杂的视频编码和解码 xff0c 于是通过截图然后使用UDP协议传输应该是可以的 所以最近试探性
  • BeanUtils.copyProperties忽略某些字段的值及其原理

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 用法 例如 xff1a BeanUtils copyProperties beforeObj route new String 34 id 34 34 createDa
  • 关于C语言中的科学计数法问题。

    变量 不能作为e的指数 是的 double a 61 3 5e2 double a 61 3 5e0 double a 61 3 5e 2 只能是字面常量 xff0c 而且必须是整数 xff0c 正负0均可 double a 61 3 5e
  • Access Denied when running Spring.IocQuickStart.MovieFinder

    I just begin to learn something about Spring Net heaps of probem are waiting for me The very first one has been solved I
  • 错误提示窗口-“操作系统当前的配置不能运行此应用程序”

    有些人安装的Windows系统里的office是精简版的 xff0c 只适合普通办公处理word和excel xff0c 以及PPT xff0c 但是我们要研究一些关于数据库的知识时会受到阻碍 xff0c 大多数人会自己在网上随便找了一个A
  • matlab练习程序(倾斜校正,透视变换)

    过去也写过透视变换 xff0c 当时算法真是弱爆了 xff0c 我竟然会通过两次变换 不过那引用的三篇文章都是非常好的文章 xff0c 直到今天我才看明白 所谓的倾斜校正 xff0c 一定要有标定点 xff0c 将一个倾斜的矩形变为不倾斜的
  • 多媒体指令(数组对应元素相乘)

    include lt iostream gt using namespace std int main int argc char argv float a 8 61 1 2 3 4 5 6 7 8 float b 8 61 1 2 3 4
  • 安卓手机如何快速投屏到windows(10/8.1/7)电脑上

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 前提 手机和电脑连接的网络必须在同一局域网下 优势 手机和电脑不需要下载对应平台的应用 xff0c 完全使用全系统自带功能 附加 以下演示是安卓手机和windows操作系统
  • Webpack mode三种模式配置说明(production,development,none)

    我们都知道webpack的配置文件 webpack config js 文件中 mode 表示webpack当前的环境以及对不同的环境的配置 虽然官方文档写明了三种不同的模块的配置 xff0c 但是没有具体说明是什么意思 xff0c 我就注