首页
/ Umi.js 项目中如何配置子包引用与热更新

Umi.js 项目中如何配置子包引用与热更新

2025-05-14 19:01:53作者:魏侃纯Zoe

在基于 Umi.js 构建的 monorepo 项目中,开发者经常会遇到需要引用其他子包的情况。本文将详细介绍如何正确配置 Umi.js 项目以支持子包引用,并实现热更新功能。

子包引用问题分析

当在 Umi.js 项目(如 packages/web)中引用其他子包(如 packages/react 或 packages/core)时,常见的错误提示是需要安装这些依赖包。这是因为默认情况下,Umi.js 的 MFSU(Module Federation Speed Up)功能会将这些子包视为外部依赖。

解决方案

1. 排除子包从 MFSU

通过在 .umirc.ts 配置文件中添加以下配置,可以告诉 Umi.js 不要将这些子包视为外部依赖:

mfsu: {
  exclude: ['@note/react']
}

这样配置后,Umi.js 将不再尝试从外部加载这些子包,而是直接从项目内部引用。

2. 启用 monorepo 重定向功能

对于 TypeScript 项目,还需要启用 monorepoRedirect 功能,它会自动为子包添加正确的 alias 路径:

monorepoRedirect: {}

这个配置会自动处理以下情况:

  • 将子包的引用重定向到源码位置
  • 支持 TypeScript 源码的热更新
  • 自动处理子包之间的依赖关系

实现原理

Umi.js 的这套解决方案基于以下技术原理:

  1. MFSU 排除机制:通过排除特定包,让构建系统知道这些是本地开发的包而非外部依赖。

  2. 路径重定向monorepoRedirect 功能会在底层自动创建正确的路径映射,确保引用的子包能够正确解析到源码位置。

  3. 热更新支持:对于 TypeScript 项目,系统会监控子包的源码变化并触发相应的重新编译和热更新。

最佳实践

  1. 对于 monorepo 项目,建议始终启用 monorepoRedirect 功能。

  2. 确保所有子包都有正确的 package.json 配置,特别是 name 字段需要与引用时使用的名称完全一致。

  3. 如果子包有 TypeScript 类型定义,确保它们被正确导出。

  4. 在开发过程中,可以同时运行子包的 watch 命令和主项目的 dev 命令,以获得最佳的热更新体验。

通过以上配置和方法,开发者可以轻松地在 Umi.js 项目中管理和引用子包,同时享受完整的开发体验和热更新功能。

登录后查看全文
热门项目推荐
相关项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
176
262
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
863
511
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
182
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
259
300
kernelkernel
deepin linux kernel
C
22
5
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
596
57
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
398
371
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
332
1.08 K