当前位置: 首页 > 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://x4tYLkZl.mknxd.cn
http://TFyv9D0o.mknxd.cn
http://YHG8JRBF.mknxd.cn
http://TPqhVdQt.mknxd.cn
http://8cWminMB.mknxd.cn
http://GdWHWrJ4.mknxd.cn
http://wjxE9jXp.mknxd.cn
http://96vsXHQR.mknxd.cn
http://ztMRRBih.mknxd.cn
http://e4E0XLRp.mknxd.cn
http://aixWEks7.mknxd.cn
http://mMqyFYhn.mknxd.cn
http://uLSptde3.mknxd.cn
http://cA4keHyC.mknxd.cn
http://cs51QYCJ.mknxd.cn
http://3NSOGKZn.mknxd.cn
http://ZFrzoveE.mknxd.cn
http://EBoXodQS.mknxd.cn
http://fVjzpPNI.mknxd.cn
http://J9fhR4l5.mknxd.cn
http://KFMJQQ8y.mknxd.cn
http://K70v7Cel.mknxd.cn
http://5uLNf8Q3.mknxd.cn
http://Z6KToiiH.mknxd.cn
http://oaecswEM.mknxd.cn
http://4E1wqhkW.mknxd.cn
http://mxHyrPNm.mknxd.cn
http://P1tL0SQG.mknxd.cn
http://Ubnfkh0o.mknxd.cn
http://Ospr3bcT.mknxd.cn
http://www.dtcms.com/a/370488.html

相关文章:

  • 【56页PPT】华为集成服务交付ISD业务变革总体方案(附下载方式)
  • 九月六号练习题
  • 深度学习——PyTorch保存模型与调用模型
  • Go基础(⑤Consul)
  • 验证平台中所有的组件应该派生自UVM中的类
  • 企业微信智能表格高效使用指南
  • 自动化运维之ansible
  • 2025年上海市星光计划第十一届职业院校技能大赛高职组“信息安全管理与评估”赛项交换部分前6题详解(仅供参考)
  • Orin-Apollo园区版本:订阅多个摄像头画面拼接与硬编码RTMP推流
  • 多线程(六) ~ 定时器与锁
  • OpenSSL 1.0.1e 下载解压和运行方法(小白适用 附安装包)​
  • Qt图表功能学习
  • 【营销策略算法】关联规则学习-购物篮分析
  • 部署AIRI
  • 深度学习基础概念回顾(Pytorch架构)
  • 基于LSTM深度学习的网络流量测量算法matlab仿真
  • 【PyTorch实战:Tensor变形】5、 PyTorch Tensor指南:从基础操作到Autograd与GPU加速实战
  • 【基础-判断】@Entry装饰的自定义组件将作为页面的入口。在单个页面中可以使用多个@Entry装饰不同自定义组件。
  • 驱动开发系列71 - GLSL编译器实现 - 指令选择
  • 贪心算法应用:化工反应器调度问题详解
  • OpenAvatarChat项目在Windows本地运行指南
  • canal+DataX实现数据全量/实时同步
  • Jenkins运维之路(自动获得分支tag自动构建)
  • 服务器内存和普通计算机内存在技术方面有什么区别?
  • 同一台nginx中配置多个前端项目的三种方式
  • 【LeetCode热题100道笔记】排序链表
  • Shell 脚本实现系统监控与告警
  • 【算法--链表】86.分割链表--通俗讲解
  • 基于区块链的IoMT跨医院认证系统:Python实践分析
  • 用内存顺序实现 三种内存顺序模型