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

Nest.js 实战 (十一):配置热重载 HMR 给服务提提速

前言

Nest.js 服务对应用程序的引导过程影响最大的是 TypeScript 编译。每次当我们修改文件时,应用程序都会重新编译整个项目,当应用程序比较庞大时,项目编译会越来越慢,会有很明显的效率低下问题。

那这个问题该怎么解决呢?使用 webpack HMR(Hot-Module Replacement) 能很大程度上降低应用实例化所用的时间。

具体教程

  1. 安装所需的依赖包
pnpm add webpack-node-externals run-script-webpack-plugin webpack -D
  1. 根目录下新增 webpack 配置文件 webpack-hmr.config.js
const nodeExternals = require('webpack-node-externals');
const { RunScriptWebpackPlugin } = require('run-script-webpack-plugin');

module.exports = function (options, webpack) {
  return {
    ...options,
    entry: ['webpack/hot/poll?100', options.entry],
    externals: [
      nodeExternals({
        allowlist: ['webpack/hot/poll?100'],
      }),
    ],
    plugins: [
      ...options.plugins,
      new webpack.HotModuleReplacementPlugin(),
      new webpack.WatchIgnorePlugin({
        paths: [/\.js$/, /\.d\.ts$/],
      }),
      new RunScriptWebpackPlugin({ name: options.output.filename }),
    ],
  };
};
  1. 为了启用 HMR,打开应用程序入口文件( main.ts )并添加一些与 webpack 相关的说明
declare const module: any;

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);

  if (module.hot) {
    module.hot.accept();
    module.hot.dispose(() => app.close());
  }
}
bootstrap();
  1. 修改 package.json 脚本命令
"start:dev": "nest build --webpack --webpackPath webpack-hmr.config.js --watch"

总结

如果您想要更高级的配置,比如自定义 webpack 配置来更好地控制HMR的行为,您可以在 webpack-hmr.config.js 文件中进行调整。这个文件位于项目的根目录下,并且包含了一些默认的 webpack 配置选项。您可以在其中添加或修改 HMR 相关的配置。


http://www.kler.cn/news/293406.html

相关文章:

  • 鸿蒙界面开发——组件(6):属性字符串(StyledString)文本输入
  • Linux_kernel移植uboot07
  • 单例模式singleton
  • C#基础(2)枚举
  • 工作流之Activiti7 和BPMN讲解
  • Elastic Stack--ES集群加密及Kibana的RBAC实战
  • 报错:Reached the max session limit(DM8 达梦数据库)
  • 【C语言】---- 复合数据类型之结构体(Struct)
  • 期权虚值和实值的投资风险有什么不同?
  • docker 安装mongoDB
  • Anchor Alignment Metric来优化目标检测的标签分配和损失函数。
  • Apache CloudStack Official Document 翻译节选(十三)
  • 使用多尺度C-LSTM进行单变量时间序列异常检测
  • 细胞因子系列
  • 92. UE5 GAS RPG 使用C++创建GE实现灼烧的负面效果
  • 嵌入式学习(链式栈和链式队列)
  • yolov8目标检测pyside6可视化图形界面+检测源码ui文件——用于计数统计
  • Docker基本使用:创建clickhouse容器
  • OKRs-E 目标管理上手指南
  • 电脑错误mfc140.dll丢失怎么办?mfc140.dll丢失如何修复?
  • 使用docker调试odoo
  • 并行编程实战——TBB的安装
  • Go语言实战 pdf
  • 2、硬件工程师笔试面试汇总
  • 实时渲染技术的崛起:游戏与实时交互的新篇章
  • ISO26262和Aspice之间的关联
  • OpenCV结构分析与形状描述符(7)计算轮廓的面积的函数contourArea()的使用
  • Qt/QML学习-Calendar
  • 探秘DevSecOps黄金管道,安全与效率的完美融合
  • Golang | Leetcode Golang题解之第391题完美矩形