Monorepo 单一代码库

Monorepo 单一代码库

问题

一般项目是独立创库管理(既:多代码库multirepos),一些基础的组件、工具函数,或者一些配置项会在多个项目中重复使用,除了copy一份之外,就是将依赖发布为一个npm包,当依赖项发生修改时,需要重新发布npm包,当修改频繁时,这种方式就显得尤为繁琐。

单一代码库

monorepo单一代码库,既所有项目都在同一个仓库中,共享依赖。

yarn workspaces

基本概念

  • workspace-root:工作区根目录,存放所有依赖项。
  • workspace:工作区目录,存放单个项目。

配置

workspace-rootpackage.json文件添加一下内容。

// package.json
{
  ...
  // 因为根目录包含特定的业务代码,与其它项目共享无意义,所以官方将次包置为私有,以保证不会发布出去
  "private": true,
  // 项目目录
  "workspaces": [ "packageA", "packageB" ],
  // 当项目存放在同一个目录时,可以采用全目录引用的方式
  "workspaces": [ "packages/*" ],
}

workspace-root下执行yarn安装依赖。
请注意,workspace没有自己的 yarn.lock 文件,workspace-root yarn.lock 包含所有工作区的所有依赖项。

依赖管理

# 在工作区根目录安装
yarn -W add [package]

# 在指定工作目录安装
yarn workspace [workspaceName] add [package]

运行

# 运行指定项目指令
yarn workspace a run dev

# 运行所有项目指令
yarn workspaces run dev

请注意,yarn workspaces run dev是串行的,意味着开发模式第一个起来服务会阻塞之后的的命令。
可以使用npm-run-all并行执行命令,在 worksapce-root 中安装。

yarn -W add npm-run-all

workspace-rootpackage.json增加如下配置。

"scripts": {
  "dev": "npm-run-all -p dev:*",
  "dev:a": "yarn workspace a run dev",
  "dev:b": "yarn workspace b run dev",
  "dev:c": "yarn workspace c run dev"
},

运行yarn run dev即可启动所有项目。


  1. 官方文档 yarn workspaces https://classic.yarnpkg.com/en/docs/workspaces ↩︎

  2. 官方文档 npm-run-all https://github.com/mysticatea/npm-run-all/blob/master/docs/npm-run-all.md ↩︎

posted @   梦渊同学  阅读(204)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示