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

Monorepo 是什么?如何使用并写自己的第三方库


1. 什么是 Monorepo?

Monorepo(单仓库)指的是把多个项目/包放在一个代码仓库里统一管理。常见结构:

/repo-root/packages/ui-lib/utils/apps/web-apppackage.jsonpnpm-workspace.yaml

好处:

  • 内部库能直接共享,不必每次发 npm。
  • 统一依赖、构建、测试流程。
  • 本地修改库源码,应用能立刻生效。

2. 如何搭建?

初始化

mkdir my-monorepo && cd my-monorepo
pnpm init -y

pnpm-workspace.yaml

packages:- "packages/*"- "apps/*"

3. 创建一个库

packages/ui-lib 下:

package.json

{"name": "@org/ui-lib","version": "0.0.0","main": "dist/index.js","types": "dist/index.d.ts","scripts": {"build": "tsup src/index.ts --format esm,cjs --dts"}
}

src/index.ts

export function greet(name: string) {return `Hello, ${name}`;
}

4. 在应用中使用

apps/web-app/package.json

{"name": "web-app","dependencies": {"@org/ui-lib": "workspace:*","react": "^18.0.0"}
}

在代码里使用:

import { greet } from '@org/ui-lib';export default function App() {return <div>{greet('Alice')}</div>
}

运行:

pnpm --filter web-app dev

5. 本地调试

  • 直接改 packages/ui-lib/src,应用就能看到效果。

  • 如果没生效,可以在库里运行:

    pnpm run build --watch
    

    应用会引入 dist 下的结果。


6. 适用场景

  • 有多个共享库(UI 组件、工具函数、API 客户端)。
  • 大型项目,需要统一构建/测试/发布。
  • 想在本地同时开发库和应用,减少发布调试的麻烦。

如果项目很小,用多仓库管理会更简单。


7. 总结

Monorepo 我应该放到工程化中实在是懒得建专栏,但是它很常用并且可以让多项目、多包的管理更高效。虽然简单但是大家还是得知道这个东西并能用。


http://www.xdnf.cn/news/1473967.html

相关文章:

  • 聊聊OAuth2.0和OIDC
  • 音转文模型对比FunASR与Faster_whisper
  • 《sklearn机器学习——聚类性能指标》Contingency Matrix(列联表)详解
  • PlantSimulation 在汽车总装车间配送物流仿真中的应用
  • Fantasia3D:高质量文本到3D内容创建工具
  • 【基础-判断】架构设计时需要考虑“一次开发,多端部署”,这样可以节省跨设备UI开发工作量,同时提升应用部署的伸缩性。
  • 【基础-判断】Background状态在UIAbility实例销毁时触发,可以在onDestroy()回调中进行系统资源的释放、数据的保存等操作。
  • wpf之TextBlock
  • Altium Designer(AD24)切换工作界面为浅灰色的方法
  • 怎么用 tauri 创建一个桌面应用程序(Electron)
  • 新手SEO优化快速起步教程
  • C++ Lambda 表达式完整指南
  • Python 正则表达式实战:用 Match 对象轻松解析拼接数据流
  • SpringAMQP
  • EMS 抗扰度在边缘计算产品电路设计的基本问题
  • 《AI大模型应知应会100篇》第68篇:移动应用中的大模型功能开发 —— 用 React Native 打造你的语音笔记摘要 App
  • 深入剖析Spring Boot自动配置原理
  • JAVA同城打车小程序APP打车顺风车滴滴车跑腿源码微信小程序打车源码
  • Android模拟简单的网络请求框架Retrofit实现
  • 具身智能模拟器:解决机器人实机训练场景局限与成本问题的创新方案
  • 【尚跑】2025逐日者15KM社区赛西安湖站,74分安全完赛
  • 腾讯混元游戏视觉生成平台正式发布2.0版本
  • 软件设计师备考资料与高效复习方法分享
  • 小米笔记本电脑重装C盘教程
  • Spring MVC 处理请求的流程
  • 提示语规则引擎:spring-ai整合liteflow
  • [Upscayl图像增强] 多种AI处理模型 | 内置模型与自定义模型
  • IDEA修改系统缓存路径,防止C盘爆满
  • echarts实现两条折线区域中间有线连接,custom + renderItem(初级版)
  • 本地MOCK