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

webpack打包时的热模块替代配置以及source-map

1.HMR

在devServer当中添加hot:true

热模块化功能

含义:当其中有一个文件发生变化的时候,那么就会被重新打包一次,极大的提高了构建速度

A.样式文件:可以使用HMR功能,因为在style-loader当中实现了

B.js文件:默认不能使用HMR功能,如果要使用,需要添加能在js当中使用HMR功能的代码

注意:HMR对js文件的处理,只能处理非入口文件的js文件

例如在js代码当中使用HMR功能:

function print(){console.log(1);
}
if(module.hot){module.hot.accept('./app.js',function(){print();})
}

C.html文件:不能使用HMR功能,因为html文件就一个,改动了那么就要对全部文件都进行编译。

解决方法:修改entry入口,将html文件引入

最终代码:

/*HMR: hot module replacement 热模块替换 / 模块热替换作用:一个模块发生变化,只会重新打包这一个模块(而不是打包所有模块) 极大提升构建速度样式文件:可以使用HMR功能:因为style-loader内部实现了~js文件:默认不能使用HMR功能 --> 需要修改js代码,添加支持HMR功能的代码注意:HMR功能对js的处理,只能处理非入口js文件的其他文件。html文件: 默认不能使用HMR功能.同时会导致问题:html文件不能热更新了~ (不用做HMR功能)解决:修改entry入口,将html文件引入
*/const { resolve } = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');module.exports = {entry: ['./src/js/index.js', './src/index.html'],output: {filename: 'js/built.js',path: resolve(__dirname, 'build')},module: {rules: [// loader的配置{// 处理less资源test: /\.less$/,use: ['style-loader', 'css-loader', 'less-loader']},{// 处理css资源test: /\.css$/,use: ['style-loader', 'css-loader']},{// 处理图片资源test: /\.(jpg|png|gif)$/,loader: 'url-loader',options: {limit: 8 * 1024,name: '[hash:10].[ext]',// 关闭es6模块化esModule: false,outputPath: 'imgs'}},{// 处理html中img资源test: /\.html$/,loader: 'html-loader'},{// 处理其他资源exclude: /\.(html|js|css|less|jpg|png|gif)/,loader: 'file-loader',options: {name: '[hash:10].[ext]',outputPath: 'media'}}]},plugins: [// plugins的配置new HtmlWebpackPlugin({template: './src/index.html'})],mode: 'development',devServer: {contentBase: resolve(__dirname, 'build'),compress: true,port: 3000,open: true,// 开启HMR功能// 当修改了webpack配置,新配置要想生效,必须重新webpack服务hot: true}
};

2.souce-map

基本格式:

devtool: 'eval-source-map'(在这里可以使用其他格式)

概念:

source-map: 一种 提供源代码到构建后代码映射 技术 (如果构建后代码出错了,通过映射可以追踪源代码错误)

    基本格式:[inline-|hidden-|eval-][nosources-][cheap-[module-]]source-map

    source-map:外部

      错误代码准确信息 和 源代码的错误位置

    inline-source-map:内联

      只生成一个内联source-map

      错误代码准确信息 和 源代码的错误位置

    hidden-source-map:外部

      错误代码错误原因,但是没有错误位置

      不能追踪源代码错误,只能提示到构建后代码的错误位置

    eval-source-map:内联

      每一个文件都生成对应的source-map,都在eval

      错误代码准确信息 和 源代码的错误位置

    nosources-source-map:外部

      错误代码准确信息, 但是没有任何源代码信息

    cheap-source-map:外部

      错误代码准确信息 和 源代码的错误位置

      只能精确到行

    cheap-module-source-map:外部

      错误代码准确信息 和 源代码的错误位置

      module会将loader的source map加入

    内联 和 外部的区别:1. 外部生成了文件,内联没有 2. 内联构建速度更快

    开发环境:速度快,调试更友好

      速度快(eval>inline>cheap>...)

        eval-cheap-souce-map

        eval-source-map

      调试更友好  

        souce-map

        cheap-module-souce-map

        cheap-souce-map

    生产环境:源代码要不要隐藏? 调试要不要更友好

      内联会让代码体积变大,所以在生产环境不用内联

      nosources-source-map 全部隐藏

      hidden-source-map 只隐藏源代码,会提示构建后代码错误信息

配置文件为:

const { resolve } = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');module.exports = {entry: ['./src/js/index.js', './src/index.html'],output: {filename: 'js/built.js',path: resolve(__dirname, 'build')},module: {rules: [// loader的配置{// 处理less资源test: /\.less$/,use: ['style-loader', 'css-loader', 'less-loader']},{// 处理css资源test: /\.css$/,use: ['style-loader', 'css-loader']},{// 处理图片资源test: /\.(jpg|png|gif)$/,loader: 'url-loader',options: {limit: 8 * 1024,name: '[hash:10].[ext]',// 关闭es6模块化esModule: false,outputPath: 'imgs'}},{// 处理html中img资源test: /\.html$/,loader: 'html-loader'},{// 处理其他资源exclude: /\.(html|js|css|less|jpg|png|gif)/,loader: 'file-loader',options: {name: '[hash:10].[ext]',outputPath: 'media'}}]},plugins: [// plugins的配置new HtmlWebpackPlugin({template: './src/index.html'})],mode: 'development',devServer: {contentBase: resolve(__dirname, 'build'),compress: true,port: 3000,open: true,hot: true},devtool: 'eval-source-map'
};

相关文章:

webpack打包时的热模块替代配置以及source-map

1.HMR 在devServer当中添加hot:true 热模块化功能 含义:当其中有一个文件发生变化的时候,那么就会被重新打包一次,极大的提高了构建速度 A.样式文件:可以使用HMR功能,因为在style-loader当中实现了 B.js文件:默认不能使用HMR功能&#xf…...

Seata架构篇 - TCC模式

TCC 模式 概述 TCC 是分布式事务中的两阶段提交协议,它的全称为 Try-Confirm-Cancel,即资源预留(Try)、确认操作(Confirm)、取消操作(Cancel)。Try:对业务资源的检查并…...

前端最全面试题整理

前端基础 一、 HTTP/HTML/浏览器 1、说一下 http 和 https https 的 SSL 加密是在传输层实现的。 (1) http 和 https 的基本概念 http: 超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(T…...

大数据之-Nifi-监控nifi数据流信息_监控数据来源_bub轻松复现---大数据之Nifi工作笔记0011

通过数据流功能可以轻松复现,数据的流向在某个时间点数据是怎么流动的,出现了什么问题,太强大了.. 真的是,可以看到通过右键,处理器,打开view data province就可以看到, 上面是处理器处理数据的详细信息 点击左侧的详情图标可以查看详情信息,details是这个事件处理的内容详情,…...

CUDA编程接口

编程接口 文章目录编程接口3.1利用NVCC编译3.1.1编译流程3.1.1.1 离线编译3.1.1.2 即时编译3.1.2 Binary 兼容性注意:仅桌面支持二进制兼容性。 Tegra 不支持它。 此外,不支持桌面和 Tegra 之间的二进制兼容性。3.1.3 PTX 兼容性3.1.4 应用程序兼容性3.1…...

惠普打印机使用

https://support.hp.com/cn-zh/product/hp-officejet-4500-all-in-one-printer-series-g510/3919445/document/c02076511HP 打印机 - 无法打印校准页本文适用于 HP 喷墨打印机。安装新墨盒后,打印机无法按预期打印校准页。步骤 1:确保打印机可以开始打印…...

Ubuntu升级cmake

目录 1、下载cmake安装包 2、开始安装 3、查看cmake版本 参考链接: https://blog.csdn.net/qq_27350133/article/details/121994229 1、下载cmake安装包 cmake安装包下载:download | cmake 我们根据自身需求下载所需版本的cmake安装包,这…...

CCNP350-401学习笔记(101-150题)

101、Refer to the exhibit SwitchC connects HR and Sales to the Core switch However, business needs require that no traffic from the Finance VLAN traverse this switch. Which command meets this requirement? A. SwitchC(config)#vtp pruning B. SwitchC(config)#…...

分享112个HTML娱乐休闲模板,总有一款适合您

分享112个HTML娱乐休闲模板,总有一款适合您 112个HTML娱乐休闲模板下载链接:https://pan.baidu.com/s/15uBy1SVSckPPMM55fiudeQ?pwdkqfz 提取码:kqfz Python采集代码下载链接:采集代码.zip - 蓝奏云 Bootstrap视频网站模板 …...

k8s快速入门

文章目录一、Kubernetes(K8S)简介1、概念1.1 Kubernetes (K8S) 是什么1.2 核心特性1.3 部署方案2、Kubernetes 集群架构2.1 架构2.2 重要概念 Pod2.3 Kubernetes 组件二、Kubernetes集群安装1、安装方式介绍2、minikubute安装3、裸机搭建(Bar…...

NG ZORRO知识点总结

NG ZORRO的常用属性,包括但不限于,结合代码 <button nz-button [nzType]"primary" [nzSize]"large" [nzLoading]"loading" [nzDisabled]"disabled" (click)"onClick()">点击我</button>nz-button是一个按钮组件…...

go中的值方法和指针方法

go中的值方法和指针方法1前言2 不同类型的对象调用不同类型的方法2.1 值对象可以调用值方法和指针方法3 指针对象可以调用值方法和指针方法4 &#xff01;注意&#xff1a;结构体对象实现接口方法1前言 golang中在给结构体对象添加方法时&#xff0c;接收者参数类型可以有两种…...

OKR常见挑战以及应对方法探讨

背景 OKR是大家经常听到的一个词&#xff0c;也有不少团队说自己实行过&#xff0c;但每个实行过的团队都遇到过挑战。很多团队都感觉OKR有些空&#xff0c;很难落地&#xff0c;普通团队成员更是时常感觉无所适从&#xff0c;感觉就像看电影。2022年我们在更大的范围落地了OK…...

SpringAMQP消息队列(SpringBoot集成RabbitMQ)

一、初始配置1、导入maven坐标<!--rabbitmq--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>2、yml配置spring:rabbitmq:host: 你的rabbitmq的ipport: …...

DIDL5_数值稳定性和模型初始化

数值稳定性和模型初始化数值稳定性梯度不稳定的影响推导什么是梯度消失&#xff1f;什么是梯度爆炸&#xff1f;如何解决数值不稳定问题&#xff1f;——参数初始化参数初始化的几种方法默认初始化Xavier初始化小结当神经网络变得很深的时候&#xff0c;数值特别容易不稳定。我…...

火狐浏览器推拽开新的窗口

今天我测试的时候&#xff0c;发现我拖拽一下火狐会打开了新的窗口&#xff0c;谷歌就不会&#xff0c;所以我们要阻止一下默认行为const disableFirefoxDefaultDrop () > {const isFirefox navigator.userAgent.toLowerCase().indexOf(firefox) ! -1if (isFirefox) {docu…...

vrrp+mstp+osfp经典部署案例

LSW1和LSW2和LSW3和LSW4上面启用vrrpmstp组网&#xff1a; vlan 10 全走LSW1出再走AR2到外网&#xff0c;vlan 20 全走LSW2出再走AR3到外网 配置注意&#xff1a;mstp实例的根桥在哪&#xff0c;vrrp的主设备就是谁 ar2和ar3上开nat ar2和ar3可以考虑换成两台防火墙来做&…...

AI_News周刊:第二期

2023.02.13—2023.02.17 1.ChatGPT 登上TIME时代周刊封面 这一转变标志着自社交媒体以来最重要的技术突破。近几个月来&#xff0c;好奇、震惊的公众如饥似渴地采用了生成式人工智能工具&#xff0c;这要归功于诸如 ChatGPT 之类的程序&#xff0c;它对几乎任何查询做出连贯&a…...

【C++的OpenCV】第一课-opencv的间接和安装(Linux环境下)

第一课-目录一、基本介绍1.1 官网1.2 git源码1.3 介绍二、OpenCV的相关部署工作2.1 Linux平台下部署OpenCV一、基本介绍 1.1 官网 opencv官网 注意&#xff1a;官网为英文版本&#xff0c;可以使用浏览器自带的翻译插件进行翻译&#xff0c;真心不推荐大家去看别人翻译的&am…...

为什么建议使用你 LocalDateTime ,而不是 Date

为什么建议使用你 LocalDateTime &#xff0c;而不是 Date&#xff1f; 在项目开发过程中经常遇到时间处理&#xff0c;但是你真的用对了吗&#xff0c;理解阿里巴巴开发手册中禁用static修饰SimpleDateFormat吗 通过阅读本篇文章你将了解到&#xff1a; 为什么需要LocalDate…...

AI漫剧软件2025推荐,助力漫画创作高效产出

AI漫剧软件2025推荐&#xff0c;助力漫画创作高效产出在当今数字化时代&#xff0c;AI漫剧软件市场正蓬勃发展。据中国动漫协会《2025中国动漫产业发展报告》显示&#xff0c;2025年AI漫剧软件市场规模同比增长了45%&#xff0c;越来越多的创作者开始借助此类软件提升创作效率。…...

AgentScope Java:阿里开源的多智能体框架,让AI应用开发变得简单

为什么我们需要Agent框架&#xff1f; 如果你开发过AI应用&#xff0c;一定遇到过这些问题&#xff1a; LLM只能生成文本&#xff0c;无法查询数据库、调用API、执行计算多轮对话需要管理上下文&#xff0c;但手动维护消息历史太繁琐复杂的任务需要多步推理&#xff0c;简单的…...

保姆级教程:Ollama+EmbeddingGemma-300m,零基础搭建嵌入模型服务

保姆级教程&#xff1a;OllamaEmbeddingGemma-300m&#xff0c;零基础搭建嵌入模型服务 1. 认识嵌入模型与EmbeddingGemma-300m 想象一下&#xff0c;如果你能让计算机真正"理解"文字的含义&#xff0c;而不仅仅是匹配关键词&#xff0c;会怎样&#xff1f;这就是嵌…...

WebREPL完全指南:突破嵌入式开发环境限制 开发者的无线调试解决方案

WebREPL完全指南&#xff1a;突破嵌入式开发环境限制 开发者的无线调试解决方案 【免费下载链接】webrepl WebREPL client and related tools for MicroPython 项目地址: https://gitcode.com/gh_mirrors/we/webrepl 价值定位&#xff1a;如何突破传统开发环境限制&…...

10个ProjectLearn性能优化技巧:提升网站加载速度和用户体验的终极指南

10个ProjectLearn性能优化技巧&#xff1a;提升网站加载速度和用户体验的终极指南 【免费下载链接】projectlearn-project-based-learning A curated list of project tutorials for project-based learning. 项目地址: https://gitcode.com/gh_mirrors/pr/projectlearn-proj…...

本科好就业的专业有哪些

本科好就业的专业主要集中在工科和医学领域&#xff0c;尤其以信息技术、智能制造、新能源、医疗健康等国家战略扶持或产业刚需方向的专业为佳。‌‌ 一、工科类专业 工科专业因技术硬核、对接产业紧密&#xff0c;在就业率和薪资上普遍表现突出。‌‌ ‌1、计算机与信息技术类…...

Linux驱动工程师面试技术要点与开发实践

Linux驱动工程师面试技术要点解析 1. 面试技术问题深度剖析 1.1 基础驱动开发能力考察 面试中关于驱动开发的基础问题主要考察候选人对底层通信协议的理解程度。I2C总线作为嵌入式系统中最常用的通信接口之一&#xff0c;其起始信号&#xff08;START Condition&#xff09;的…...

快速部署PyTorch 2.5:预装CUDA环境实战教程

快速部署PyTorch 2.5&#xff1a;预装CUDA环境实战教程 本文是一篇基础教程类文章&#xff0c;旨在帮助开发者快速上手使用预装了PyTorch 2.5和CUDA环境的深度学习镜像。无论你是刚接触深度学习的新手&#xff0c;还是需要快速搭建开发环境的老手&#xff0c;这篇教程都能让你…...

OpenHarmony-XTS认证实战:从环境准备到报告提交的避坑指南

1. OpenHarmony-XTS认证入门指南 第一次接触OpenHarmony-XTS认证的开发者&#xff0c;往往会被复杂的流程和陌生的术语搞得晕头转向。作为一个踩过无数坑的老手&#xff0c;我完全理解这种迷茫感。记得我第一次做认证时&#xff0c;光是理解各种测试套件的用途就花了整整两天时…...

DiskInfo终极指南:3分钟掌握硬盘健康状态,免费保护你的数据安全

DiskInfo终极指南&#xff1a;3分钟掌握硬盘健康状态&#xff0c;免费保护你的数据安全 【免费下载链接】DiskInfo DiskInfo based on CrystalDiskInfo 项目地址: https://gitcode.com/gh_mirrors/di/DiskInfo 硬盘就像电脑的"记忆仓库"&#xff0c;所有重要文…...