Monorepo仓库管理策略之 Lerna

这里写目录标题

    • 前言:
    • 一、简介
    • 二、新建项目使用
      • 安装
      • 生成结构
    • 三、复用现有项目
      • 执行命令
      • 查看包
    • 四、配置package相互引用
      • 导入现有的包
    • 五、发布包
      • 确定项目版本
      • 发布项目
      • 添加项目到到git
      • 发布包到NPM包
      • 发布出错解决方案
    • 五、实例代码

前言:

将大型代码仓库分割成多个独立版本化的 软件包(package)对于代码共享来说非常有用。但是,如果某些更改 跨越了多个代码仓库的话将变得很 麻烦 并且难以跟踪,并且, 跨越多个代码仓库的测试将迅速变得非常复杂。

一、简介

Lerna 是一种工具,针对 使用 git 和 npm 管理多软件包代码仓库的工作流程进行优化

特点:

  • Lerna 对任意数量的项目运行命令,它以最有效的方式、以正确的顺序执行
  • Lerna 管理你的发布流程,从版本管理到发布到 NPM
  • Lerna 速度很快,甚至比大多数同类解决方案还要快

二、新建项目使用

安装

注意: addbootstrap link 三个命令在v7后都不在维护

mkdir lerna-demo && cd lerna-demo
npm i lerna -g  // 目前是 8.1.6
lerna -h

在这里插入图片描述

生成结构

你将启动并运行一个工作 git 存储库,包括 npm 工作区,并且 lerna 可用于创建、版本控制和发布你想要开发的任何包

lerna init
# --independent/-i – 使用独立的 版本控制模式。
# or
npx lerna init --packages="packages/*" #手动指定一组要匹配的模式

目录结构

lerna-demo ├── lerna.json├── node_modules├── package-lock.json└── package.json

三、复用现有项目

我们已可以使用现有的项目来,来用 lerna init ,现有项目入口,接下来的项目讲解将会使用这个现有项目

执行 init

lerna init

执行命令

执行每个包中的命令

# 运行每个项目中的dev
lerna run dev  
# 同时运行多个命令
lerna run dev,build

执行单个包命令

lerna run dev --scope=v-cart  

--scope: v-cart 包名称

在这里插入图片描述

查看包

lerna ls
在这里插入图片描述

四、配置package相互引用

v-user 添加 index.js

const baseInfo = {addr: "成都市",age: 20,name: "张三",};module.exports = {baseInfo}

v-cart
package.json

{"scripts": {
+    "build": "echo build v-cart",},"dependencies": {
+    "v-user":"1.0.0"}
}

添加 index.js

// import {baseInfo} from 'v-user'
let {baseInfo} = require('v-user')console.log(JSON.stringify(baseInfo));

运行命令:

yarn # 安装所有包lerna run test --scope=v-cart

在这里插入图片描述

导入现有的包

lerna import
在这里插入图片描述

五、发布包

先将本地代码跟 git 仓库进行链接,如果是新分支,需要将分支先推送上去,我这以创建新的分支lerna 为例

在这里插入图片描述

在这里插入图片描述

确定项目版本

lerna version --no-private 
#--no-private  过滤掉private 项目

在这里插入图片描述
在这里插入图片描述

发布项目

lerna publish from-package
#--no-private  过滤掉private 项目

1 . 确保 镜像源是 npm

npm config get registry 
// https://registry.npmjs.org/

2. 查看是否登录 npm, 没有就请 npm login 进行登录

npm whoami

在这里插入图片描述

添加项目到到git

在这里插入图片描述

发布包到NPM包

v-cart 项目已经被占用,所有我们将项目整体换个名字 ziyu-xxx 开头

在这里插入图片描述

发布出错解决方案

如果某些包已成功发布而其他包未成功发布,则lerna publish可能使存储库处于与某些更改的文件不一致的状态。那么你可以运行 lerna publish from-git 来重试发布相同的已标记版本,而不必在重试时再次更改版本。

五、实例代码

github 实例代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3225268.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【漏洞复现】通达OA v2017 video_file.php 任意文件下载漏洞

免责声明: 本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测…

【鸿蒙学习笔记】Stage模型

官方文档:Stage模型开发概述 目录标题 Stage模型好处Stage模型概念图ContextAbilityStageUIAbility组件和ExtensionAbility组件WindowStage Stage模型-组件模型Stage模型-进程模型Stage模型-ArkTS线程模型和任务模型关于任务模型,我们先来了解一下什么是…

数学建模及国赛

认识数学建模及国赛 认识数学建模 环境类:预测一下明天的气温 实证类: 评价一下政策的优缺点 农业类: 预测一下小麦的产量 财经类: 分析一下理财产品的最优组合 规划类: 土地利用情况进行 合理的划分 力学类&#xf…

RedHat Linux8 修改root管理员账户密码命令

RedHat Linux8 修改root管理员账户密码命令: sudo passwd root RedHat重置root管理员密码: 1. 查看Linux系统版本信息 cat /etc/redhat-release2. 重置密码 2.1 进入内核编辑界面 重启Linux系统并出现引导界面,按下键盘上的e键进入内…

Pyecharts绘制热力图的说明+代码实战

引言 热力图在数据可视化中是一种强大的工具,可以直观地展示数据的分布情况和变化趋势。Pyecharts是一个基于Echarts的Python可视化库,提供了丰富的图表类型,包括热力图。在本文中,我们将深入探讨Pyecharts绘制多种炫酷热力图的参…

12-阿里云单细胞处理-PBMC(by-jmzeng)

scRNA_10X/seurat-v2/sup-patient1-PBMC.Rmd at master jmzeng1314/scRNA_10X (github.com) s04-运行seurat流程处理一万个单细胞转录组数据并自动化出报告_哔哩哔哩_bilibili #section 3已更新#「生信技能树」单细胞公开课2021_哔哩哔哩_bilibili 上传读取数据 可以配置租…

手表名表维修开单系统软件教程,佳易王钟表养护维护保养记录开单软件操作教程

手表名表维修开单系统软件教程,佳易王钟表养护维护保养记录开单软件操作教程 以下软件操作教程以,佳易王钟表养护维修管理系统软件为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 一、软件程序操作教程 1、佳易王钟表维…

寂静孤独的404页面源码

寂静孤独的404页面源码,灯光闪烁动态效果,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面 寂静孤独的404页面源…

【面试八股总结】面向对象三大特性、虚函数、纯虚函数、虚继承

参考资料:阿秀 一、面向对象三大特性 封装:将数据和代码捆绑在一起,避免外界干扰和不确定性访问 继承:让某种类型对象获得另一个类型对象的属性和方法 多态:同一种事务表现出不同事务的能力,即&#xf…

Git 详解(原理、使用)

git 快速上手请看这篇博客 Git 快速上手 1. 什么是 Git Git 是目前最主流的一个版本控制器,并且是分布式版本控制系统,可以控制电脑上所有格式的文档 版本控制器:记录每次修改以及版本迭代的管理系统 对于文本文件,可以记录每次…

Vue3项目如何使用npm link本地测试组件库

一、组件库操作 1、在组件库项目中先运行npm run lib,其效果如下 2、在组件库项目中在运行npm link,其效果如下 会创建一个全局的软连接指向本地的组件库 二、Vue3项目使用 1、在项目中运行 npm link 组件名称(即:组件库packag…

【PB案例学习笔记】-30动态打开窗口

写在前面 这是PB案例学习笔记系列文章的第30篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gite…

数电基础 - 数制,码制

目录 一. 简介 数制 码制 二. 进制 十进制(Decimal): 二进制(Binary): 八进制(Octal): 十六进制(Hexadecimal): 三. 进制的转…

Go语言---正则表达式

正则表达式是一种进行模式匹配和文本操纵的复杂而又强大的工具。虽然正则表达式比纯粹的文本匹配效率低,但是它却更灵活。按照它的语法规则,只需构造出的匹配模式就能够从原始文本中筛选出几乎任何你想要得到的字符组合。go语言的通过regexp标准包来实现…

外卖商城平台小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,商家管理,骑手管理,商品类型管理,商品信息管理,订单信息管理 微信端账号功能包括:系统首页,商品信息&#…

理解负载组电路-EAK负载电路解释

负载组具有安全、可靠、操作方便、使用寿命长等特点。了解控制、冷却和负载元件电路的布局和功能对于理解负载组的运行、为应用选择负载组和维护负载组非常重要。以下各节将描述这些电路。 EAK负荷组运行概述 负载组接收来自电源的电力,将其转换为热量,…

Spring Cloud Alibaba -- 分布式定时任务解决方案(轻量级、快速构建)(ShedLock 、@SchedulerLock )

文章目录 一、 ShedLock简介二、 SchedulerLock三、基于Mysql方式使用步骤1.建表2.引入依赖3.Mysql连接配置4.ScheduledLock配置5.启动类配置6.创建定时任务7.启动多个项目服务进行测试8.SchedulerLock注解说明 四、使用注意事项 一、 ShedLock简介 ShedLock 是一个用于 Java …

58、基于径向基神经网络的曲线拟合(matlab)

1、基于径向基神经网络的曲线拟合简介及原理 1)原理简介 基于径向基神经网络(Radial Basis Function Neural Network, RBFNN)的曲线拟合是一种常用的非线性拟合方法,通过在输入空间中使用径向基函数对数据进行处理,实…

【机器学习】使用决策树分类器预测汽车安全性的研究与分析

文章目录 一、决策树算法简介决策树的结构分类和回归树 (CART)决策树算法术语决策树算法直觉 二、属性选择度量信息增益熵 基尼指数计算分割基尼指数的步骤 三、决策树算法中的过度拟合避免过度拟合的方法 四、导入库和数据可视化探索性数据分析重命名列名查看数据集的总结信息…

仪表板展示|DataEase看中国:2023年中国新能源汽车经济运行情况分析

背景介绍 随着政府机构、企业和个人对环保和可持续发展的高度关注,“新能源汽车”在全球范围内成为了一个热门话题。新能源汽车是指使用非传统燃料(如电能、氢能等)作为动力源的汽车。 在中国市场,新能源汽车产业蓬勃发展&#…