浅谈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开发时髦的导航栏第二篇

    总体思路: 先用HTML定义导航栏的外框架,确定导航栏的基本结构。 使用CSS样式定义导航栏的样式,包括背景、高度、宽度以及对鼠标的交互效果等。 对选中的菜单项增加样式,以凸显当前所选项目。 对二级菜单进行样式定义并实现显示。 Step1:HTML定义导航栏的外框架 导航栏最外层是 标签,里面嵌套 标签, 标签表示每一个菜单项。 <nav> &l…

    css 2023年6月9日
    00
  • 利用边框border属性做的网页小符号

    利用CSS的边框border属性可以实现各种有趣的网页小符号,下面是完整的攻略。 1. 创建HTML结构 首先,我们需要创建相应的HTML结构来展示需要使用符号的地方。常见的是用列表 标签来展示符号列表,下面是一个示例: <ul> <li>符号1</li> <li>符号2</li> <li&g…

    css 2023年6月10日
    00
  • 利用JavaScript构建树形图的方法详解

    那么让我们开始详细讲解“利用JavaScript构建树形图的方法详解”的攻略。 1. 确定数据格式 在构建树形结构之前,我们需要明确树形结构的数据格式。一般来说,每个节点都需要包含以下信息: id:节点的唯一标识符 parentId:父节点的id name:节点的名称 递归嵌套孩子节点的时候需要符合如下格式: { id: 1, name: ‘Node1’, …

    css 2023年6月9日
    00
  • html网页引入svg图片的4种方式

    当我们想要在HTML网页中引入SVG图片的时候,有以下4种方式: 使用<img>标签 通过<img>标签来引入SVG图片,与引入普通图片的方式相同,只需指定图片的路径即可。需要注意的是,使用<img>标签引入的SVG图片无法通过CSS对其中的元素进行样式修改。 示例代码: <img src=”example.svg”…

    css 2023年6月9日
    00
  • 纯CSS实现markdown自动编号的示例代码

    下面是实现 Markdown 自动编号的完整攻略: 1. 编写 HTML 结构 首先,我们需要在 HTML 中编写 Markdown 的各级标题结构。具体来说,我们需要为每个标题添加对应的 HTML 标记和一个唯一的 id 属性,以便后续的 CSS 选择器匹配。 下面是一个示例的 HTML 结构: <h1 id="section1"…

    css 2023年6月10日
    00
  • CSS3制作半透明边框(Facebox)类似渐变

    下面是关于“CSS3制作半透明边框(Facebox)类似渐变”的详细攻略: 1. 什么是Facebox效果 Facebox效果是指通过CSS3技术制作的一种类似渐变的半透明边框效果,可以用于美化网页中的图片、文本框等元素,突出他们的重要性和美观度。Facebox效果具有注重细节、奇妙而简洁的特点,而且可以实现的方式也非常简单,接下来我将向你介绍Facebox…

    css 2023年6月9日
    00
  • DIV设置浮动后无法撑开外部DIV的解决办法

    DIV设置浮动后无法撑开外部DIV的解决办法,是前端开发中常见的问题。下面我会给出一个完整的攻略,包含以下几个部分: 了解问题背景 利用clearfix解决问题 利用伪元素解决问题 了解问题背景 在前端开发中,我们通常会使用CSS中的float属性设置元素浮动。但是,当一个元素设置了浮动后,其父元素的高度会无法被撑开。这会导致在父元素中垂直居中或者水平居中的…

    css 2023年6月10日
    00
  • 一文了解CSS 标签显示模式

    当我们在网页中使用CSS时,标签的显示模式会对网页的布局和样式有很大影响。了解标签的显示模式对于开发者来说是十分重要的。本篇文章将会介绍CSS标签显示模式的各种类型,包括其默认行为和如何修改它们。 什么是CSS标签显示模式 CSS标签显示模式决定了一个元素在网页中的布局,包括元素所占据的空间大小、元素与其他元素之间的相对位置等。一个元素的显示模式基于CSS …

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