网站LOGO
白雾茫茫丶
页面加载中
11月21日
网站LOGO 白雾茫茫丶
记录学习、生活和有趣的事
菜单
  • 白雾茫茫丶
    记录学习、生活和有趣的事
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    Nest.js 实战 (十一):配置热重载 HMR 给服务提提速
    点击复制本页信息
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。
    • 复制图片
    • 复制图片地址
    • 百度识图
    按住ctrl可打开默认菜单

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

    谢明伟 · 原创 ·
    前端开发Nest 实战 · TypeScriptNest
    共 1849 字 · 约 1 分钟 · 387
    本文最后更新于2024年09月02日,已经过了80天没有更新,若内容或图片失效,请留言反馈

    前言

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

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

    具体教程

    1. 安装所需的依赖包

      powershell 代码:
      pnpm add webpack-node-externals run-script-webpack-plugin webpack -D
    2. 根目录下新增 webpack 配置文件 webpack-hmr.config.js

      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 }),
       ],
        };
      };
    3. 为了启用 HMR,打开应用程序入口文件( main.ts )并添加一些与 webpack 相关的说明

      ts 代码:
      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();
    4. 修改 package.json 脚本命令

      json 代码:
      "start:dev": "nest build --webpack --webpackPath webpack-hmr.config.js --watch"

    总结

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

    声明:本文由 谢明伟(博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。

    还没有人喜爱这篇文章呢

    我要发表评论 我要发表评论
    博客logo 白雾茫茫丶 记录学习、生活和有趣的事 51统计 百度统计
    MOEICP 萌ICP备20236860号 ICP 粤ICP备2023007649号 ICP 粤公网安备44030402006402号

    💻️ 谢明伟 35分钟前 在线

    🕛

    本站已运行 2 年 325 天 2 小时 51 分

    🌳

    自豪地使用 Typecho 建站,并搭配 MyLife 主题
    白雾茫茫丶. © 2022 ~ 2024.
    网站logo

    白雾茫茫丶 记录学习、生活和有趣的事