浅谈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日

相关文章

  • fixed固定定位transofrm失效的解决

    当一个元素有fixed定位属性时,会将该元素相对于浏览器窗口进行定位,并且该元素会从文档流中脱离,不再影响其他元素的位置。在此情况下使用transform属性进行变换时,可能会遇到失效的问题。下面介绍几种解决方法。 方法一:使用translate代替transform 将transform属性替换成translate属性来解决该问题,因为translate属…

    css 2023年6月10日
    00
  • 微信小程序 刷新上拉下拉不会断详细介绍

    微信小程序刷新上拉下拉不会断详细介绍 为什么需要刷新上拉下拉不中断? 在微信小程序的使用中,我们通常需要在一个页面中展示大量的数据,因此,很多时候我们都需要设置滚动刷新、上拉加载、下拉刷新等功能,以方便用户进行数据的展示及操作。但是,如果在设置这些功能时不注意,就容易造成用户在使用过程中出现卡顿、无响应等问题。因此,为了提高用户体验,我们需要按照一定规则来设…

    css 2023年6月10日
    00
  • 如何解决flex文本溢出问题小结

    如何解决flex文本溢出问题小结 在Web开发的工作中,我们常常会遇到一些flex布局中文本溢出的问题。这种问题往往发生在元素的宽度、高度被限制在一个固定大小的容器中时。在这种情况下,文本容易超出这个容器的宽度,导致布局崩溃。在本文中,我将总结一些解决文本溢出问题的方法,帮助大家更好地应对文本布局的挑战。 使用text-overflow属性 在CSS样式中,…

    css 2023年6月9日
    00
  • css高度随宽度比例变化的几种实现方法

    下面是关于 CSS 高度随宽度比例变化的几种实现方法的攻略。 方法一:使用padding百分比计算 我们可以设置一个固定的宽度,然后利用padding百分比来达到高度随宽度变化的效果。例如: <style> .container { width: 500px; height: 0; padding-bottom: 66.6%; backgroun…

    css 2023年6月10日
    00
  • hCalendar微格式 关于事件和基于时间或地点的活

    hCalendar是一种微格式,用于标记网页上的事件和活动,以便用户和搜索引擎更轻松地识别和使用。下面是使用hCalendar微格式的攻略: 标记 hCalendar微格式的标记包括一个class属性为”vevent”的HTML元素和多个包含事件信息的子元素。以下是一个基本的例子: <div class="vevent"> &…

    css 2023年6月10日
    00
  • 使用HTML5和CSS3制作一个模态框的示例

    制作一个模态框是前端开发中的常见需求,以下是使用HTML5和CSS3制作模态框的攻略: 一、HTML结构 制作模态框需要使用HTML搭建模态框的骨架,其中包含以下元素: 1.1 遮罩层 遮罩层是覆盖在页面上的半透明层,用于屏蔽其他操作,使用户可以专注于模态框的内容。通常使用一个带有id属性的div元素来实现。 <div id="mask&qu…

    css 2023年6月10日
    00
  • jQuery写fadeTo示例代码

    当需要在页面上实现元素渐变过渡效果时,可以使用jQuery的fadeTo()方法。下面是完整的攻略: 1. 概览 jQuery中的fadeTo()方法可以让元素在指定时间内渐变到指定的不透明度。该方法可以接受两个参数: duration: 指定过渡动画的时间,单位为毫秒(默认为400ms) opacity: 指定目标不透明度,范围在0到1之间(默认为1) 该…

    css 2023年6月10日
    00
  • CSS Reset 样式重置的实现示例

    以下是关于“CSS Reset 样式重置的实现示例”的完整攻略: 为什么需要 CSS Reset 当我们在开发网站时,浏览器对不同的 HTML 标签默认会有默认的样式,但不同的浏览器可能会有不同的默认样式。这些默认样式有时候可能会导致页面样式的差异化,比如行距、文字大小、边距等问题。为了解决这些问题,我们需要使用 CSS Reset 来重置浏览器的默认样式,…

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