Devtool 此选项控制是否生成,以及如何生成 source map。选择一种 source map 格式来增强调试过程。不同的值会明显影响到构建(build)和重新构建(rebuild)的速度。配置很多,分别有以下几种。

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

/******/ (() => { // webpackBootstrap
/*!**********************!*\!*** ./src/index.js ***!\**********************/
eval("console.log('hello world')\n\n//# sourceURL=webpack://webpack5/./src/index.js?");
/******/ })()
;

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

/******/ (() => { // webpackBootstrap
/*!**********************!*\!*** ./src/index.js ***!\**********************/
eval("console.log('hello world')//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93ZWJwYWNrNS8uL3NyYy9pbmRleC5qcz9iNjM1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6Ii4vc3JjL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc29sZS5sb2coJ2hlbGxvIHdvcmxkJykiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/index.js\n");
/******/ })()

eval-cheap-source-map - 类似 eval-source-map,每个模块使用 eval() 执行。这是 "cheap(低开销)" 的 source map,因为它没有生成列映射(column mapping),只是映射行数。它会忽略源自 loader 的 source map,并且仅显示转译后的代码,就像 eval devtool。

eval-cheap-module-source-map - 类似 eval-cheap-source-map,并且,在这种情况下,源自 loader 的 source map 会得到更好的处理结果。然而,loader source map 会被简化为每行一个映射(mapping)。

source-map eval-cheap-source-map eval-cheap-module-source-map
生成实际的文件 不生成实际的文件 不生成实际的文件
行列数能够正确映射 只是映射行数 只是映射行数
会映射到原始代码中 仅显示转译后的代码 会映射到原始代码中

特定场景

以下选项对于开发环境和生产环境并不理想。他们是一些特定场景下需要的,例如,针对一些第三方工具。

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

cheap-source-map - 没有列映射(column mapping)的 source map,忽略 loader source map。

inline-cheap-source-map - 类似 cheap-source-map,但是 source map 转换为 DataUrl 后添加到 bundle 中。

cheap-module-source-map - 没有列映射(column mapping)的 source map,将 loader source map 简化为每行一个映射(mapping)。

inline-cheap-module-source-map - 类似 cheap-module-source-map,但是 source mapp 转换为 DataUrl 添加到 bundle 中。

inline 的意思就是说,我们 source-map 会生成单独的文件,但是为了不生成单独文件,通过将生成的内容 base64 转换了,把内容内嵌到 bundle 中了,不会产生单独的文件。

重点关注

1、添加到 eval() 中 2、添加到 bundle 中

eval 性能较好,因为可以根据文件进行缓存。所以最后推荐大家在开发环境中使用的配置是:eval-source-map,不要在生产环境使用!!!如何需要更快速度并且只需要行信息不需要列信息,你甚至可以使用 eval-cheap-module-source-map(推荐老司机使用。)

总结:cheap(低开销)的 sourcemap,因为它没有生成列映射(column mapping),只是映射行数,开发时我们有行映射也够用了,开发时可以使用cheap。

eval-source-map 就会带上源码的 sourceMap,加了 eval 的配置生成的 sourceMap 会作为 DataURI 嵌入,不单独生成 .map 文件。官方比较推荐开发场景下使用 eval 的构建模式,因为它能 cache sourceMap,从而 rebuild 的速度会比较快。

推荐:eval-cheap-module-source-map

了解 sourceMap 配置相关推荐

  1. Sourcemap 配置详解

    前言 之前在脚手架工具内整合将sourcemap上传sentry能力的时候,考虑bundle分割对.map文件关联的限制:比如TerserWebpackPlugin(JS压缩)只对 devtool 选 ...

  2. webpack (七) -配置sourceMap——为了更容易地追踪代码错误和警告

    14-webpack-sourceMap--为了更容易地追踪代码错误和警告 项目打包后,dist解析的代码位置相较于源代码会发生变化 为了更容易地追踪错误和警告,JavaScript 提供了 sour ...

  3. 6个必须掌握的基础配置 - [webpack第一篇]

    webpack实战系列全目录 webpack6个常见的基础配置知识点 webpack 12个常见的实际场景 webpack15个常见的优化策略[敬请期待] webpack从0打造兼容ie8的脚手架[敬 ...

  4. 前端生产环境调试工具sourcemap的使用

    sourcemap简介 当我们的应用程序部署到生产环境时,我们发现它与我们在开发环境时的代码不同.我们的代码在构建过程中会以各种方式进行修改和优化. TypeScript 被转译.压缩.生成的 Jav ...

  5. SourceMap源码映射详细讲解

    SourceMap源码映射详细讲解 前端工程打包后代码会跟项目源码不一致,当代码运行出错时控制台上定位出错代码的位置跟项目源码上不对应.这时候我们很难定位错误代码的位置.SourceMap的用途是可以 ...

  6. webpack5.x 各种开发常见配置大汇总 loader plugin devServer proxy babel 懒加载

    webpack学习之旅 文章目录 webpack学习之旅 webpack基础打包 认识webpack 脚手架依赖webpack webpack是什么 Vue项目加载的文件有哪些 webpack使用前提 ...

  7. 【提高系列】webpack相关知识

    这次我们主要研究的是webpack框架的相关知识,webpack是一个打包构建的前端框架,用于解决前端开发的模块化问题. 应用场景和纵向比较 说到webpack,肯定你还会想到gulp和grunt这些 ...

  8. vue 组件发布记录

    有段时间没做独立的 vue 组件了,最近突然想把一个常用的 vue 组件打成一个 npm 包,方便使用.好久不用,发现已经忘记环境怎么搭建.翻看以前的组件,才慢慢回想起来,中间还出现些问题.在这记录下 ...

  9. javascript编译压缩

    javascript编译 js是JavaScript 源码文件, .min.js是压缩版的js文件. .min.js文件经过压缩,相对编译前的js文件体积较小,传输效率快.经过编码将变量和函数原命名改 ...

最新文章

  1. 车辆动力学及控制_道路自适应车辆动力学控制研究(127页)【附下载】
  2. pytorch crossentropy为nan
  3. 自己动手写一个简单的MVC框架(第二版)
  4. centerOS安装chkrootkit
  5. Swagger3、SpringBoot学习、使用复盘
  6. React.js 基础入门四--要点总结
  7. 获取客户端的IP地址
  8. 【干货】2021年技术趋势:全球企业加速数字化转型-德勤.pdf(附下载链接)
  9. paip.提高稳定性---自动检测sleep mysql数据库死连接以及kill
  10. 深度学习入门(一)——深度学习如何入门?
  11. 网页打不开显示php探针,phpinfo被禁用,可用php探针
  12. Java中的标识符,关键字以及变量和常量
  13. Q7:难道不想手工搞个环境?
  14. 网页视频倍速播放代码
  15. Android中Gson使用,flutter调用原生sdk
  16. 每日持续签到,累计签到,送积分
  17. 电脑无法连接WiFi(显示地球图标)
  18. 为什么需要Secondary Index
  19. 2022大三计算机 | 保研机试 | 学习路线
  20. Python之路【第十六篇】:Django【基础篇】

热门文章

  1. 提出智能扰动方法!字节跳动隐私保护论文入选 NeurIPS 2020 联邦学习Workshop
  2. 免费开源:人人必备的数据分析技能
  3. 一行代码如何隐藏 Linux 进程?
  4. 30名工程师,历时1300天打造,又一“国产”AI框架开源了
  5. 5G 消息绝地求生:盘活短信 VS 击垮微信?
  6. 腾讯回应 QQ 被工信部通报;由微软老兵领导,Facebook 开发新操作系统;Node.js 13.4.0 发布 | 极客头条...
  7. 顶尖技术专家严选,15场前沿论坛思辨,2019中国大数据技术大会邀您共赴!
  8. 阿里拟 20 亿美元收购网易考拉;联通 5G 套餐最低 190 元;Rust 1.37.0 发布 | 极客头条...
  9. 不止 JavaScript 与 React,前端程序员必备的 9 大技能!
  10. 快播王欣再做视频;Apple Watch 非法雇佣学生;ofo 进军电单车 | 极客头条