使用lerna搭建monorep

多项目版本管理:monorepo 策略 一个产品会有多个项目,每个项目之间会存在版本同步的问题,如何在其中一个项目发布上线后,保证每个项目版本升级后的版本同步问题,提出的解决方案就是 monorepo 策略。monorepo 是一种将多个项目代码存储在一个仓库里的软件开发策略(mono 意为单一,repo 意为 仓库)。与之相对的是另一种流行的代码管理方式 MultiRepo,即每个项目对应一个单独的仓库来分散管理。通过 monorepo 策略管理代码的代码仓库的目录结构会是这样:不过,monorepo 不只是将不同子项目的目录汇集到一个目录之下 阅读详情

为什么我们需要monorep

由于项目越来越多,前端项目越来越零散,管理起来越来越难,便于统一管理前端项目,打通项目之间的壁垒,组件更通用化,达到高内聚低耦合的目的;

前置准备

开发过程

初始化项目
npm install --global lerna
git init monorep && cd monorep
lerna init

初始化之后的项目结构

monorep/
  packages/
  package.json
  lerna.json

为了更符合实际场景,需要对组件库,utils,config,tools,docs等进行拆分,拆分后的目录结构如下

monorepo
├── CHANGELOG.md
├── PLANS.md
├── README.md
├── components
├── config
├── docs
├── tools
├── utils
├── web
├── package.json
├── lerna.json

配置yarn workspace处理子项目依赖问题

// monorep/package.json
{
	...
  "workspaces": {
    "packages": [
      "components",
      "tools/*",
      "utils/*",
      "web/*",
      "docs/*"
    ]
  }
}

lerna配置

// monorep/lerna.json
{
  "packages": [   // 执行lerna命令会生效的packages
    "components",
    "utils/*",
    "tools/*",
    "web/*",
    "web_demo/*",
    "docs/*"
  ],
  "command": {
    "publish": {   // 部署配置
      "ignoreChanges": [
        "ignored-file",
        "*.md",
        "web/*",
        "web_demo/*",
        "docs/*"
      ],
      "message": "chore(release): publish",
      "registry": "https://registry.npmjs.org"
    },
    "bootstrap": {  // 执行引导流程配置(安装所有 依赖项并链接任何交叉依赖)
      "ignore": [],
      "npmClientArgs": [
        "--no-package-lock",
        "--hoist"
      ]
    },
    "version": {  // 修改版本号配置
      "allowBranch": [
        "main"
      ],
      "conventionalCommits": true
    }
  },
  "version": "0.0.11",
  "npmClient": "yarn",
  "useWorkspaces": true  // 使用工作空间
}

源码

github

SAP 授权默认数据工具栏里的六个实用按钮,从快速切换应用到 PFCG 角色反查 摘要:SAP授权默认数据维护工具中的辅助功能常被忽视,但它们能显著提升维护效率。"Other Application"(Shift+F5)支持快速切换应用;"Show/Hide Selection Result"(Shift+F12)优化界面显示;"Check Current Default Data"(Ctrl+F2)校验数据一致性;"Delete"(Shift+F2)清理无效数据。这些功能虽小,却能帮助规避授权维护中的常见陷 阅读详情

相关推荐

前端工程化-Genebox小程序端Monorepo架构改造

工具 yarnworkspace+lerna yarnworkspace管理依赖,lerna负责更新发布 功能模块 授权 用户相关,登录.... 唾液盒绑定 唾液盒切换 唾液盒检测进度 地址编辑 下单 回寄 协议 网页WebView相关 配置 路由 拆包 package.json commitlint husky tsconfig 根据目前的项目状况,设计如下: package入口统一为index.js package源码入口统...

... 844

vue 历程记

截止2023年年底,最新的vue2.x 源码和vue3.x 源码的核心部分,项目结构的“管理方式”对比:(左边是 vue2.x 源码目录)(右边是 vue3.x 源码目录)vue2.x 的源码托管在 src 目录下,依据功能拆分成了不同的模块;vue3.x 的源码主要是使用 monorep 的理念来开发和维护的——根据功能将不同的模块拆分到 packages 目录下面。

青蛙king的博客 1289

stm32使用TB6600驱动器控制42BYGH型步进电机

stm32使用TB6600驱动器控制42BYGH型步进电机

qq_35653974的博客 9587

Monorepo实现的几种方式和对比(lerna yarn workspace)

参考文章:【译】配置 Monorepo 的几种工具 lerna、npm、yarn 及其性能对比 - 知乎 Monorepo Monorepo 是管理项目代码的一个方式,指在一个项目仓库 (repo) 中管理多个模块/包 (package),常见的是组件库 和 大型复杂的项目中。 类似下面的结构 ├── packages | ├── pkg1 | | ├── package.json | ├── pkg2 | | ├── package.json ├── package.j...

zw52yany的博客 1429

第二十届全国大学生智能车竞赛-地瓜机器人智慧医疗挑战赛技术解析与实战指南

本文深入解析了第二十届全国大学生智能车竞赛-地瓜机器人智慧医疗挑战赛的核心技术。内容涵盖从零搭建数字孪生环境、实现AI视觉任务(二维码识别、引导线追踪、目标检测)、在边缘设备部署轻量化大模型进行图生文描述,到遥操作与自主控制的平滑切换,并提供了基于ROS2的系统集成与赛场实战指南,助力参赛者高效备赛。

weixin_29252171的博客 2777

Unraid小白必看:5分钟搞定OpenWrt软路由安装(附iStoreOS配置技巧)

本文为Unraid新手提供了一份详尽的OpenWrt软路由安装与配置指南。通过虚拟机技术,在Unraid系统上快速部署基于iStoreOS的软路由,详细讲解了旁路由与主路由两种模式的网络配置、性能优化技巧及常见故障排查方法,帮助用户充分利用闲置硬件,打造高性能、可定制的家庭网络中枢。

wine的专栏 486

2024年了你还不懂什么是monorepo?五分钟教会你!

Monorepo是一种项目开发与管理的策略模式,它代表"单一代码仓库"(在Monorepo模式中,所有相关的项目和组件都被存储在一个统一的代码仓库中,而不是分散在多个独立的代码仓库中,这些项目之间还可能会有依赖关系。npmyarnpnpm等是用来管理项目依赖、发布包、安装依赖的工具,它们都提供了对工作区(workspace)的支持,允许在单个代码库中管理多个项目或包。这种工作区支持在单个代码库中同时开发、测试和管理多个相关的项目,而无需使用多个独立的代码仓库。这些包管理工具与monorepo。

小庄zzz的博客 1万+

三维重建之条纹投影结构光(三)——相位展开优化与多频外差实践

本文深入探讨了三维重建中条纹投影结构光技术的核心环节——相位展开优化。针对传统路径跟踪法存在的误差传播与路径依赖问题,重点解析了多频外差法的原理与优势,并通过详细的C++代码实践,展示了如何利用三频外差法实现鲁棒、高精度的相位展开,从而获得连续的绝对相位图,为后续三维点云生成奠定坚实基础。

weixin_29074295的博客 531

monorepo相关概念

Monorepo官网:https://lerna.js.org/MonoRepo上述提到传统的Monorepo解决方案中,项目构建时如果基于多个应用程序存在依赖构建,耗时是非常可怕的。Turborepo的出现,正是解决Monorepo慢的问题。Turborepo是一个用于 JavaScript 和 TypeScript 代码库的高性能构建系统。通过增量构建、智能远程缓存和优化的任务调度,Turborepo。

抓住IT的尾巴的博客 2677

set_output_delay的本质

set_output_delay的本质

qq_33300585的博客 3389

用Isaac Sim复现经典案例:手把手教你写Python脚本控制机械臂抓取(附避障算法调试心得)

本文详细介绍了如何使用NVIDIA Isaac Sim仿真系统复现机械臂抓取经典案例,包括Python脚本编写、避障算法调试等关键步骤。通过URDF模型导入、关节控制逻辑实现和RMPFlow避障配置等实战演示,帮助开发者快速掌握机器人仿真技术,特别分享了官方文档未提及的实用调试技巧和性能优化策略。

weixin_30632089的博客 407

精读《Monorepo 的优势》

1. 引言 本周精读的文章是 The many Benefits of Using a Monorepo。 现在介绍 Monorepo 的文章很多,可以分为如下几类:直接介绍 Lerna API 的;介绍如何从独立仓库迁移到 Lerna 的;通过举例子说明 Monorepo 重要性的。 本文属于第三种,从 Android 与 IOS 的开发故事说明了 Monorepo 的重要性。 笔者之所以选择这...

weixin_33725807的博客 263

高分思路!挑战7天完成一篇网状meta DAY1-7

PASSION!继续析挑战,7天完成一篇网状meta分!

MR_SCI_help的博客 786

带你了解并实践monorepo和pnpm,绝对干货!熬夜总结!

简单来说就是,将多个项目或包文件放到一个git仓库来管理。目前比较广泛应用的是yarn+lerna的方式实现monorepo的管理。一个简单的monorepojs复制代码| ├── pkg1| ├── pkg2之所以应用monorepo,主要是解决以下问题:代码复用的问题开发流程统一高效管理多项目/包最简单的方法其实就是在package.json里做配置,在打包的时候我们直接取这里的配置即可,比如我们在包toolsjson复制代码。

2401_83384536的博客 5565

损失函数大汇总(三十八)(AUCPR Loss附公式推导与代码)

本文系统介绍了AUCPR Loss的原理与应用。针对不平衡分类任务中AUC指标不够敏感的问题,提出通过优化PR曲线面积(AUCPR)来提升模型性能。文章详细推导了AUCPR的可微近似实现:首先用sigmoid函数软化阈值判断,构造可微的TP/FP/FN计数;然后基于软Precision和Recall计算近似PR曲线面积;最后通过数值积分得到可优化的损失函数。特别讨论了温度参数τ对训练稳定性的影响,并比较了AUCPR与AUC、AP等指标的异同。该方法适用于医学筛查、欺诈检测等极端不平衡场景,能更准确反映模型对

悦学共鸣,温柔以待,汇聚光芒,共同成长 441

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

monorepo学习(1)

monorepo单个仓库可以包含去多相关但是独立的项目。

m0_73280507的博客 768

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Monorepo 在前端工程化中的深度实践与演进

本文系统探讨了Monorepo在前端工程化中的应用。首先定义了Monorepo的核心概念和特征,对比了其与传统Multirepo的架构差异和工作流程区别。重点分析了Monorepo在代码共享、工具链统一、原子提交和依赖管理方面的优势,同时也指出了仓库体积、构建性能等挑战及解决方案。文章提供了渐进式迁移方案和实施建议,强调Monorepo适用于多项目共享代码、需要保持一致性的场景,但需评估团队准备度和预期收益。最终指出应根据实际需求选择适合的架构模式。

LYFlied的博客 559

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Monorepo

Monorepo 最早的出处是软件开发策略的一个分支,”mono” 表示单一 “repo” 是”repository”的缩写,意为多个项目共用一个代码库来管理依赖关系,同一套配置文件,统一构建部署流程等等。Monorepo是集中式管理的前端代码管理方式,将所有的项目在集中一个代码仓库进行管理,严格的统一个收归,有利于统一的升级和管理方式,作为新型的管理方式,monorepo有效降低了运行以及协作的成本,但一个代码仓库的管理模式带来了项目体积上的上升,获取时间延长,同时安全性也有所下降。

liangx的博客 1363

多工程管理方式 - lerna的使用

一、lerna是干什么用的 为什么叫lerna? lerna是希腊神兽九头蛇Lernaean Hydra的前几个字母,也间接形象的描述了多包管理的功能 简单来说:它优化了使用Git和NPM管理多包存储库的工作流,用来管理多个npm项目,处理每个项目相互之前引用关系,以及每个项目的发布管理。 一个lerna项目的结构大致如下: my-lerna-repo/ package.json packages/ package-1/ package.json packa..

qq_36943808的博客 6233

使用lerna搭建脚手架项目

详细实现方式以及文件下载请前往https://www.passerma.com/article/74 一、初始化项目 1.创建脚手架文件夹 执行npm init -y初始化项目 2.全局安装lerna 使用npm i lerna -g全局安装lerna 3.初始化lerna项目 使用 lerna init初始化项目 这步需要装有git才可以执行,初始化完成后生成lerna.json以及packages文件夹 4.新建.gitignore文件 将一些无需上传的文...

passerma的博客 1663

npm install报错

vue-element-admin安装依赖报错

weixin_45284253的博客 648

前端安装 lerna

当你在终端中遇到错误时,意味着你的系统没有找到lerna命令。这通常是因为lerna没有被正确安装或者其可执行文件的路径没有被添加到系统的PATH环境变量中。

Keep trying, keep going 1802

Lerna安装步骤、创建并管理多包项目使用示例

Lerna 是一个优化了 npm 包管理和协作开发的工具,适用于像 React、Babel 这样包含多个子包的大型项目。

学亮编程手记 1575

monorepo策略

monorepo 是一个项目管理方式,具体是指将多个项目代码存储在一个仓库里的软件开发策略。例如 Babel, create-react-app,react-router,他们的第一级目录都是以脚手架 cli 为主,而各种功能的的包都在 package 文件夹下(他们都是用的是lerna)。 ├── lerna.json ├── package.json ├── packages | ├── pkg1 │ ├── index.js │ ├── node_modules/ |

ifredom 622
上一篇: 如何搭建一个前端脚手架
下一篇: 前端3D词云
一号小白
博客等级 码龄9年 13粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值