source maps

Webpack打包生成的.map后缀文件,使得我们的开发调试更加方便,它能帮助我们链接到断点对应的源代码的位置进行调试(//# souceURL),而devtool就是用来指定source-maps的配置方式的。以下是官方文档的说明:

source maps

开发工具(Devtool)

此选项控制是否生成,以及如何生成 Source Map。以下是官方文档的配置选项:

devtool配置选项

其中一些值适用于开发环境(从表格中各种方式的构建速度来看,可以看出eval方式可大幅提高持续构建效率,这对经常需要边改边调的同学而言非常重要),一些适用于生产环境。对于开发环境,通常希望更快速的 Source Map,需要添加到 bundle 中以增加体积为代价,但是对于生产环境,则希望更精准的 Source Map,需要从 bundle 中分离并独立存在。

对于开发环境

eval 每个模块都使用 eval() 执行,并且都有 //@ sourceURL。此选项会相当快地构建。主要缺点是,由于会映射到转换后的代码,而不是映射到原始代码,所以不能正确的显示行数。

inline-source-map - SourceMap 转换为 DataUrl 后添加到 bundle 中。

eval-source-map - 每个模块使用 eval() 执行,并且 SourceMap 转换为 DataUrl 后添加到 eval() 中。初始化 SourceMap 时比较慢,但是会在重构建时提供很快的速度,并且生成实际的文件。行数能够正确映射,因为会映射到原始代码中。

cheap-module-eval-source-map - 就像 eval-source-map,每个模块使用 eval() 执行,并且 SourceMap 转换为 DataUrl 后添加到 eval() 中。"低开销"是因为它没有生成列映射(column map),只是映射行数。

对于生产环境

source-map - 生成完整的 SourceMap,输出为独立文件。由于在 bundle 中添加了引用注释,所以开发工具知道在哪里去找到 SourceMap。

hidden-source-map - 和 source-map 相同,但是没有在 bundle 中添加引用注释。如果你只想要 SourceMap 映射错误报告中的错误堆栈跟踪信息,但不希望将 SourceMap 暴露给浏览器开发工具。

cheap-source-map - 不带列映射(column-map)的 SourceMap,忽略加载的 Source Map。

cheap-module-source-map - 不带列映射(column-map)的 SourceMap,将加载的 Source Map 简化为每行单独映射。

nosources-source-map - 创建一个没有 sourcesContent 的 SourceMap。它可以用来映射客户端(译者注:指浏览器)上的堆栈跟踪,而不会暴露所有的源码。

举例

比如我的vue项目中,在打包生产环境的build.js时,使用的devtool是source-map,打包信息如下:

生产环境下运行webpack命令

打包后生的的dist目录如下(内含build.js.map文件):

打包后生成的dist目录

最原始的source-map实现方式,打包代码的同时生成一个sourcemap文件,并在打包文件的末尾添加//# souceURL,注释会告诉JS引擎原始文件位置

生成的build.js

推荐方式

开发环境推荐:

cheap-module-eval-source-map

生产环境推荐:

cheap-module-source-map

然而vue-cli脚手架搭建的工程,开发环境使用的是eval-source-map,生产环境用的是source-map。不管怎么说的,其实用起来感觉都差不多。但是,直接将sourceMap放入打包后的文件,会明显增大文件的大小,不利于静态文件的快速加载;而外联.map时,.map文件只会在F12开启时进行下载(sourceMap主要服务于调试),故推荐使用外联.map的形式。

参考链接

webpack打包生成的map文件_Webpack的devtool和source maps相关推荐

  1. webpack打包生成的map文件_Webpack的source map

    一.webpack中source map是什么 目前我们的例子都是在浏览器里运行编译打包后的代码,编译后的代码会把我们的原始代码做压缩整合等操作.这样的代码与原始代码差别非常大,对于我们开发时是没有帮 ...

  2. webpack打包生成的map文件_从这十几个方面优化你的 Webpack 配置

    目录 开发环境性能优化 生产环境性能优化 开发环境性能优化 优化打包构建速度 HMR 优化代码调试 source-map HMR ❝ 概念:「HMR:」 hot module replacement ...

  3. webpack打包生成的map文件_一站式搞明白webpack中的代码分割

    上次分析到通过devtool的配置项来设置source map,在线上环境可以通过设置成cheap-module-source-map来生成单独的map文件,但是map文件在线上环境会不会每次都加载呢 ...

  4. webpack打包生成的map文件_webpack-sourcemap映射关系

    1.什么是sourcemap? webpack打包后的文件会自动添加很多代码, 在开发过程中非常不利于我们去调试 因为如果运行webpack打包后的代码,错误提示的内容也是打包后文件的内容 所以为了降 ...

  5. webpack打包生成的dist文件如何运行

    原文链接: https://blog.csdn.net/u014054437/article/details/79981307       下文纯属为了方便自己做的一个笔记 1. 安装express- ...

  6. 使用webpack打包ThinkPHP的资源文件

    使用webpack打包ThinkPHP的资源文件 利用自己的空余时间一直在维护http://www.wx2share.com这个小网站,全是一个人在弄,由于只租得起虚拟空间,所以后台采用了简单方便的T ...

  7. vue打包生成的js文件过大优化

    vue打包生成的js文件过大优化 1.组件按需加载 2.去掉生成map文件 3.cdn引入 4.路由懒加载 5.代码压缩 6.最后 项目打包之后js文件太大问题 问题描述 1.使用cdn引入不怎么改变 ...

  8. vue cli3打包后出现.map文件

    vue 脚手架3在打包的时候默认会生成.map文件.用于详细报错,但生产环境是没必要的.所以生产环境关闭,开发环境打开是最好的选择 百度和博客搜了一圈,无非就是告诉你怎么配置config,但是实测并没 ...

  9. pyinstaller打包生成的exe文件(并设置运行时静默)

    pyinstaller打包生成的exe文件(并设置运行时静默) 目录 pyinstaller打包生成的exe文件(并设置运行时静默)

最新文章

  1. 硕导跳槽高中当老师,博士扎堆中小学,是内卷还是进步?
  2. php新特性:trait 关键字使用
  3. 大于3小于4的整数bleem_比三大,比四小的整数是存在的吗?
  4. java direct memory_第一讲  JVM内存四大类型:Heap,Stack,Contant,DirectMemory等
  5. 基于错误的sql注入
  6. 《开源网店系统iWebShop2.0模板开发教程》的说明
  7. 【C++入门】C++多态
  8. MATLAB-绘图-散点图绘制
  9. Spring官网下载最新jar包
  10. 酒店管理系统需求分析
  11. Pano2VR制作热区激活面板
  12. 联通短信息中心号码,联通服务中心号码速查
  13. VBOX虚拟机的网络设置
  14. 解决基于html5video标签多个视频同时播放的问题
  15. c语言实现图书借阅系统
  16. 男人怎么读 萨瓦迪卡!还是萨瓦迪卡不!
  17. 【arcpy批量制图】符号系统的色带、小数点设置
  18. 影响消费者行为的个人因素
  19. 笔记本安装内存条、重装系统教程
  20. 淘宝商品销量接口/淘宝商品销量监控接口/商品累计销量接口

热门文章

  1. Java 拆分PDF文档
  2. Windows XP系统中实用的命令及操作技巧
  3. 使用 Qt for Android 获取并利用手机传感器数据(下篇)使用C++实现功能
  4. 电商APP首页楼层架构设计详解
  5. Word排版-页眉上的横线
  6. 质安码区块链直推新零售通过线上线下资源整合,实现信息传递的最大化
  7. POJ(8463)-----Stupid cat Doge(openjudge)
  8. 简单的网页制作期末作业——电影泰坦尼克号(4页)
  9. HLS视频服务器SRS简介
  10. 奔驰809android auto,奔驰E Android Auto+AA Mirro技术作业