当前位置: 首页 > news >正文

Webpack5入门到原理21:提升开发体验

SourceMap

为什么

开发时我们运行的代码是经过 webpack 编译后的,例如下面这个样子:

/** ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").* This devtool is neither made for production nor for readable output files.* It uses "eval()" calls to create a separate source file in the browser devtools.* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)* or disable the default devtool with "devtool: false".* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).*/
/******/ (() => { // webpackBootstrap
/******/ 	"use strict";
/******/ 	var __webpack_modules__ = ({/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js!./src/less/index.less":
/*!**********************************************************************************************************!*\!*** ./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js!./src/less/index.less ***!\**********************************************************************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".box2 {\\n  width: 100px;\\n  height: 100px;\\n  background-color: deeppink;\\n}\\n\", \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://webpack5/./src/less/index.less?./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js");/***/ }),
// 其他省略

所有 css 和 js 合并成了一个文件,并且多了其他代码。此时如果代码运行出错那么提示代码错误位置我们是看不懂的。一旦将来开发代码文件很多,那么很难去发现错误出现在哪里。

所以我们需要更加准确的错误提示,来帮助我们更好的开发代码。

是什么

SourceMap(源代码映射)是一个用来生成源代码与构建后代码一一映射的文件的方案。

它会生成一个 xxx.map 文件,里面包含源代码和构建后代码每一行、每一列的映射关系。当构建后代码出错了,会通过 xxx.map 文件,从构建后代码出错位置找到映射后源代码出错位置,从而让浏览器提示源代码文件出错位置,帮助我们更快的找到错误根源。

怎么用

通过查看Webpack DevTool 文档可知,SourceMap 的值有很多种情况.

但实际开发时我们只需要关注两种情况即可:

  • 开发模式:cheap-module-source-map

优点:打包编译速度快,只包含行映射

缺点:没有列映射

module.exports = {// 其他省略mode: "development",devtool: "cheap-module-source-map",
};
  • 生产模式:source-map

优点:包含行/列映射

缺点:打包编译速度更慢

module.exports = {// 其他省略mode: "production",devtool: "source-map",
};

http://www.lryc.cn/news/284953.html

相关文章:

  • YOLOv8改进 | Conv篇 | 在线重参数化卷积OREPA助力二次创新(提高推理速度 + FPS)
  • conda国内加速
  • RabbitMQ-数据持久化
  • JS-WebAPIs-本地存储(五)
  • 了解Vue中日历插件Fullcalendar
  • Cloudreve存储策略-通过从机存储来拓展容量
  • java进阶-jvm精讲及实战
  • vue中引入sass、scss
  • Java学习笔记(八)——Lambda表达式
  • 【JavaEE】CAS
  • Linux 系统之部署 h5ai 目录列表程序
  • MySQL自增ID耗尽探究:分析与解决方案
  • 操作系统-操作系统引导(磁盘 操作系统引导过程)
  • 基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖微信小程序端(十三)
  • SAP S/4HANA 2023 Fully-Activated Appliance 虚拟机版介绍
  • 【Docker篇】详细讲解容器相关命令
  • LSTM学习笔记
  • Android 13.0 Recent列表不显示某个app
  • 速盾网络:高防ip是什么
  • 全志A133AndroidQ编译方式
  • 2024首更---Web Service 教程
  • Day29- 贪心算法part03
  • RPA与ChatGPT的融合:智能化流程的未来
  • Ubuntu安装maven并且配置阿里源
  • 如何通过idea使用JDK8.0创建Spring项目
  • Spark读取kafka(流式和批数据)
  • 经典目标检测YOLO系列(二)YOLOV2的复现(1)总体网络架构及前向推理过程
  • 怎样使用崭新的硬盘
  • Kafka-多线程消费及分区设置
  • 计算机导论06-人机交互