浅谈webpack devtool里的7种SourceMap模式

当我们使用webpack打包项目时,我们可以通过 devtool 选项来配置生成source map。 它们有不同的视觉效果(适用于不同的开发场景)和内存资源消耗(可能影响构建时间)。 下面我们来详细讲解webpack devtool里的7种source map模式。

1. eval

这种模式是将每个模块封装到 eval(...) 中,因此生成的source map只针对eval后生成的代码,不包含初始代码。这使得它是最快的选项,但也是不可读的,因为它没有将代码映射回原始代码。它的类型为 eval

devtool: 'eval'

2. source-map

这种模式能够生成传统的source map,它为每一行代码生成一个单独的map文件,因此打包的速度会比较慢。它提供最佳的质量,但代价是构建速度会更慢。它的类型为 source-map

devtool: 'source-map'

3. cheap-source-map

这种模式与 source-map 类似,但它不包含列信息(即哪个位置出错了),所以对构建速度和源代码保护有一定的帮助。它的类型为 cheap-source-map

devtool: 'cheap-source-map'

4. cheap-module-source-map

这种模式与 cheap-source-map 一样,但它在加载了包含loader的Source Map时,会显示 loader 的名称。它的类型为 cheap-module-source-map

devtool: 'cheap-module-source-map'

5. inline-source-map

这种模式会将source map以dataURL的方式打包进源文件中,而不是生成一个单独的Map文件,这对于较小的项目比较有用。它的类型为 inline-source-map

devtool: 'inline-source-map'

6. eval-source-map

这种模式是速度最快的,而且生成的Source Map不会消耗磁盘空间。它通过在每个模块末尾追加 //# sourceMappingURL=eval-source-map 的 sourceMappingURL 注释来实现。它的类型为 eval-source-map

devtool: 'eval-source-map'

7. hidden-source-map

这种模式不会在源代码中添加source map,同时生成一个单独的map文件,只提供给捕获异常时使用。它的类型为 hidden-source-map

devtool: 'hidden-source-map'

示例1:

// webpack.config.js
module.exports = {
  devtool: 'source-map',
  // ...
}

这个例子中我们将devtool配置成 source-map ,它将为每个文件生成单独的SourceMap,并为报错提供详细的信息。

示例2:

// webpack.config.js
module.exports = {
  devtool: 'cheap-module-source-map',
  // ...
}

这个例子中我们将devtool配置成 cheap-module-source-map ,它对于大型项目是非常有用的,并且将为报错提供module信息。

除了以上列举的模式外,还有其他模式可以使用。 但需要根据具体的情况来选择正确的源码映射类型,以获得最佳的开发体验。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈webpack devtool里的7种SourceMap模式 - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • 详解css透明度之rgba和opacity的区别及兼容

    下面就来详细讲解一下关于CSS透明度的两种常见方式: opacity 和 rgba。 一、opacity 和 rgba 的区别 1. opacity opacity 是 CSS3 中的一个属性,用来设置元素的不透明度,取值范围是 0 到 1,其中 0 表示完全透明,1 表示完全不透明。 div { opacity: 0.5; } 使用 opacity 可以实…

    css 2023年6月10日
    00
  • 详解CSS Masking模块之Clipping

    CSS Masking模块之Clipping CSS Masking模块之Clipping为我们提供了在HTML元素上使用图形进行裁剪的功能。使用Clipping可以让我们将元素裁剪成各种形状,可以用于实现一些特殊效果,例如矩形、椭圆、圆形和多边形等等。 基本语法 在CSS中使用Clipping属性,可以使元素具有裁剪功能。具体语法如下: .element …

    css 2023年6月9日
    00
  • 关于.prettierrc代码格式化配置方式

    Prettier 是一款代码格式化工具,可以快速地帮助程序员完成代码格式化的需求,让代码整洁可读。在使用 Prettier 的过程中,我们可以通过配置 .prettierrc 来自定义代码格式化规则。 下面,我将详细讲解关于 .prettierrc 配置的完整攻略。 创建 .prettierrc 文件 首先,我们需要在项目根目录下创建一个 .prettier…

    css 2023年6月10日
    00
  • CSS3弹性盒模型开发笔记(一)

    以下是关于“CSS3弹性盒模型开发笔记(一)”的完整攻略: 1. CSS3弹性盒模型概述 CSS3弹性盒模型是一种用于布局设计的模型,它可以用于任何容器(包括块级和行内元素)中,并且可以解决多种布局问题。通过定义容器中弹性盒子的排列方式和对齐方式,我们可以实现更灵活的布局效果。 1.1 弹性容器和弹性项目 在使用弹性盒模型进行布局时,我们需要将元素包含在一个…

    css 2023年6月10日
    00
  • 拥有一个属于自己的javascript表单验证插件

    下面我会为你详细讲解“拥有一个属于自己的JavaScript表单验证插件”的完整攻略,过程中也会提供两条示例说明。 1. 设计表单验证插件的要点 在设计表单验证插件之前,首先需要明确以下要点: 验证规则:确定验证规则,如必填项、最大长度、邮箱格式等。 错误提示:当输入错误时需要提供相应的错误提示,如“此项不能为空”、“长度不能超过10个字符”等。 验证方法:…

    css 2023年6月9日
    00
  • html pre标签使文本自动换行

    HTML pre标签使文本自动换行 在HTML中,pre标签为预格式化标签。它允许你编写如何呈现文本的方式。pre标签会保留在文本编辑器中所有的空格、换行符和其他空间字符,并将它们显示在HTML页面上。这使得pre标签非常适合用于呈现代码块和其他格式化文本。 基本用法 以下是一个基本的使用示例: <pre> Hello World How are…

    css 2023年6月9日
    00
  • 全面解析Bootstrap中transition、affix的使用方法

    全面解析Bootstrap中transition、affix的使用方法 Bootstrap是一个流行的前端框架,它提供了多种组件和工具,方便了开发者们的网站制作。其中,transition和affix是两个常用的工具。本文将详细讲解它们的使用方法。 transition的使用方法 在Bootstrap中,transition指过渡动画效果,可以实现某些元素的…

    css 2023年6月10日
    00
  • jquery给图片添加鼠标经过时的边框效果

    下面我将为您讲解如何使用jQuery给图片添加鼠标经过时的边框效果。 1. 引入jQuery库 在代码中使用jQuery库前,需要先引入该库。可以通过以下CDN链接引入: <script src="https://cdn.staticfile.org/jquery/3.6.0/jquery.min.js"></scrip…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部