当前位置: 首页 > 知识库问答 >
问题:

webpack5 - webpack自定义loader为啥只在项目启动时执行,代码热更新时并不执行?

顾乐家
2023-06-17

webpack自定义loader为啥只在项目启动时执行,代码热更新时并不执行,
如何让每次代码改变后保存代码也能让自定义loader执行一遍?就行编译错误一样每次保存都会校验一遍。

共有1个答案

邹祺
2023-06-17

Webpack自定义loader在项目启动时执行,但在代码热更新时不执行的原因是由于Webpack的工作流程和热更新机制的设计。

在Webpack的工作流程中,当项目启动时,Webpack会根据配置文件中的规则(rules)来匹配文件,并将匹配到的文件交给相应的loader进行处理。这个处理过程是在构建(build)阶段完成的,它将源文件转换为目标文件。

然而,在代码热更新过程中,Webpack的目标是尽可能地快速更新已经修改的模块,而不重新构建整个项目。为了实现这一点,Webpack使用了一种称为HMR(Hot Module Replacement)的机制。当一个模块发生改变时,Webpack只会替换掉这个模块,而不会重新构建整个项目。

由于自定义loader是在构建阶段执行的,而热更新只会替换已修改的模块,而不会重新构建整个项目,因此自定义loader并不会在热更新过程中执行。

如果你希望在代码热更新时也执行自定义loader的逻辑,可以考虑使用Webpack的插件(plugin)机制来实现。Webpack的插件可以监听HMR事件,并在模块发生改变时执行自定义逻辑。你可以编写一个插件来监听HMR事件,并在事件发生时执行自定义loader的逻辑。这样就可以在热更新过程中实现自定义loader的执行了。

 类似资料:
  • 问题内容: 我正在编写一个Django中间件类,该类只想在启动时执行一次,以初始化一些其他人工代码。我遵循了sdolan 在此处发布的非常好的解决方案,但是“ Hello”消息两次输出到终端。例如 在我的Django设置文件中,该类已包含在列表中。 但是当我使用runserver运行Django并请求页面时,我进入了终端 有什么想法为什么要打印两次“ Hello world”?谢谢。 问题答案:

  • 问题内容: 我正在编写一个Django中间件类,该类只想在启动时执行一次,以初始化一些其他人工代码。我遵循了sdolan 在此处发布的非常好的解决方案,但是“ Hello”消息两次输出到终端。例如 在我的Django设置文件中,该类已包含在列表中。 但是当我使用runserver运行Django并请求页面时,我进入了终端 有什么想法为什么要打印两次“ Hello world”?谢谢。 问题答案:

  • 我正在我的项目中使用模块,该模块公开了要监视的RESTendpointURL 默认情况下,仅公开 和 终结点。 根据我的使用案例,我正在通过< code > application . properties 文件自定义endpoint。 我想了解,Spring启动究竟在哪里为和创建实际的endpoint,以及它如何通过HTTP公开它们?

  • 我已经创建了一个Spring引导应用程序,并将其导入到STS中。但当我试图执行"Maven Update"时,它显示了以下错误pom.xml文件以及没有得到更新。任何帮助都将不胜感激。谢谢! 错误如下:- 项目生成错误:com的不可解析父POM。示例:demo:0.0。1-快照:转移组织失败。springframework。boot:springbootstarter父级:pom:2.0。3.免除

  • 我有一个应用程序在Laravel与.env.local文件(a和我做了下一个docker-comment文件: 还有我的Dockerfile: 我希望克隆存储库,并在docker compose构建时在dockerfile中执行以下操作: 重命名.env.local. env 给存储文件夹权限。我有一个错误在这一行

  • 问题内容: 我想知道是否有一种方法可以像使用bash的.bash_profile或.profile脚本那样在进入python shell时自动运行命令。我想自动导入一些模块,这样我每次跳入shell时都不必键入整个shebang。 谢谢, 问题答案: 是的,你可以使用环境变量来做到这一点所概述这里