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

Lerna

Lerna

    Lerna是一个优化基于git+npm的多pagkage项目的管理工具

  • 解决的痛点
    • 痛点一:重复操作
      • 多Package本地link
      • 多Package依赖安装
      • 多Package单元测试
      • 多Package代码提交
      • 多Package代码发布
    • 痛点二:版本一致性
      • 发布时版本一 致性
      • 发布后相互依赖版本升级

package越多,管理复杂度越高

  • 优势
    • 大幅减少重复操作
    • 提升操作的标准化

*lerna开发脚手架流程

lerna命令语法文档

1.脚手架项目初始化
2.创建package
3.脚手架开发和测试
4.脚手架发布上线
lerna init
安装lerna
初始化npm
lerna link 连接依赖
lerna add 安装依赖
lerna create 创建Package
lerna bootstrap 重装依赖
lerna clean 清空依赖
lerna run 执行npm命令
lerna exec 执行shell脚本
lerna publish 项目发布
lerna diff 查看diff
lerna changed 查看上版本以来的所有变更
lerna version 进行 bump version
  1. 脚手架项目初始化

    npm init -y
    npm i -g lerna
    lerna init
    
  2. 创建package

    lerna create core # 输入命令后会让填写package name,请不要填写成默认的core为name,可以写成@项目名/core,之后一路回车
    lerna create utils # 步骤和上一条命令一样# 在npm上创建组织,组织名为上两条命令的@后面的项目名
    # 点击npm头像,点击Add Organization,点击输入项目名,点击create,点击跳过。组织创建完毕。lerna add 依赖名 # 为每个packages安装依赖
    lerna add 依赖名 路径名[packages/core/] # 为单个packages安装依赖lerna link 
    # 直接执行lerna link是无效的
    # 以将utils目录下的lib/utils.js改成lib/index.js
    # utils目录下的package.json的"main": "lib/utils.js"改成"main": "lib/index.js"
    # 在core目录下的package.json中写入"dependencies": {"@pale-cli-dev/utils": "^1.0.0"}
    # 之后再执行lerna link,就会发现在core目录下多了一个node_modules目录,就是utils的软连接
    
  3. 脚手架开发和测试

    lerna exec -- rm -rf node_modules/ 
    # 删除packages下的所有node_modules,而不是根目录下的node_modules
    lerna exec --scope 包名[@pale-cli-dev/core] -- rm -rf node_modules. 
    # 删除packages下core中的node_moduleslerna run 脚本名(package.json中script中的属性) # 执行每个packages的脚本命令
    lerna run --scope 包名[@pale-cli-dev/core] 脚本名 # 执行对应包名下的脚本命令lerna clean 
    # 清空添加的依赖 lerna clean只能去除掉packages下的node_modules,但是不会去除package.json中写入的dependencieslerna bootstrap 
    # 重装依赖 也可以重装链接(link) 但是需要在lerna.json中设置"useWorkspaces": false,不然会显示lerna info bootstrap root only,而不会进入packages中
    
  4. 脚手架发布上线

    lerna version # 升级版本 需要将代码commite仓库后才能运行lerna changed # 自上一个版本以来 哪些packages进行了变更lerna diff # lerna publish # 发布项目 注意在第二条创建package中需要进行组织的创建
    
  5. 关于lerna publish的一些报错

    lerna ERR! E401 [UNAUTHORIZED] Login first,需要将npm设置成原本的镜像npm config set registry https://registry.npmjs.orglerna ERR! E426 426 Upgrade Required - PUT http://registry.npmjs.org/@pale-cli-dev%2futils 设置的镜像不正确,是https而不是http最好不要修改版本号,因为虽然npm没有发布成功但是github仓库会有不同版本的tag,如果版本相同也不会发布成功如果项目中没有修改,内容和上次版本一样,也不会发布成功
    

相关文章:

Lerna

Lerna Lerna是一个优化基于gitnpm的多pagkage项目的管理工具 解决的痛点 痛点一:重复操作 多Package本地link多Package依赖安装多Package单元测试多Package代码提交多Package代码发布 痛点二:版本一致性 发布时版本一 致性发布后相互依赖版本升级 package越多,管…...

迁移学习 pytorch

迁移学习(Transfer Learning)是通过使用一个预训练模型来快速训练一个新的网络模型,通常应用于数据集较小或计算资源较少的情况下。在 PyTorch 中,由于 torchvision 库中已经内置了一些经典的预训练模型,因此我们可以通过简单的调用函数来实现迁移学习。 下面是一个基于 …...

【python】keras包:深度学习( RNN循环神经网络 Recurrent Neural Networks)

RNN循环神经网络 应用: 物体移动位置预测、股价预测、序列文本生成、语言翻译、从语句中自动识别人名、 问题总结 这类问题,都需要通过历史数据,对未来数据进行预判 序列模型 两大特点 输入(输出)元素具有顺序关系…...

vue框架快速入门

vue 1、第一个Vue程序1.1、什么是Vue程序1.2、为什么要使用MVVM1.3、Vue1.4、第一个vue程序 2、基础语法2.1、v-bind2.2、v-if, v-else2.3、v-for2.4、v-on 3、Vue表单双绑、组件3.1、什么是双向数据绑定3.2、在表单中使用双向数据绑定3.3、什么是组件 4、Axios异步…...

Java连接顺丰开放平台

今天使用Java去访问顺丰的开放平台时,JSON转换一直不成功,最终发现是 可以看到这里是 "apiResultData": "{\"success\": .........它是以 " 开头的!!!如果是对象的话,那么…...

前端三剑客 - HTML

前言 前面都是一些基础的铺垫,现在就正式进入到web开发环节了。 我们的目标就是通过学习 JavaEE初阶,搭建出一个网站出来。 一个网站分成两个部分: 前端(客户端) 后端(服务器) 通常这里的客户端…...

【计算机视觉 | 自然语言处理】BLIP:统一视觉—语言理解和生成任务(论文讲解)

文章目录 一、前言二、试玩效果三、研究背景四、模型结构五、Pre-training objectives六、CapFilt架构七、Experiment八、结论 一、前言 今天我们要介绍的论文是 BLIP,论文全名为 Bootstrapping Language-Image Pre-training for Unified Vision-Language Understa…...

c++基础-运算符

目录 1关系运算符 2运算符优先级 3关系表达式的书写 代码实例&#xff1a; 下面是面试中可能遇到的问题&#xff1a; 1关系运算符 C中有6个关系运算符&#xff0c;用于比较两个值的大小关系&#xff0c;它们分别是&#xff1a; 运算符描述等于!不等于<小于>大于<…...

美术馆c++

题目&#xff1a; 杜老师非常喜欢玩一种叫做“美术馆”的数字游戏&#xff0c;蜗蜗看了之后决定也来试一试&#xff0c;他改编了这个游戏&#xff0c;规则如下&#xff1a; 有一个 n&#xfffd; 行 m&#xfffd; 列的方格&#xff0c;每一个格子中有一个数&#xff0c;数字…...

浅谈MySQL索引以及执行计划

MySQL索引及执行计划 &#x1f42a;索引的作用&#x1f42b;索引的分类&#xff08;算法&#xff09;&#x1f999;BTREE索引算法演变&#x1f992;Btree索引功能上的分类4.1 辅助索引4.2 聚集索引4.3 辅助索引和聚集索引的区别 &#x1f418;辅助索引分类&#x1f98f;索引树高…...

在c++项目中使用rapidjson(有具体的步骤,十分详细) windows10系统

具体的步骤&#xff1a; 先下载rapidjson的依赖包 方式1&#xff1a;直接使用git去下载 地址&#xff1a;git clone https://github.com/miloyip/rapidjson.git 方式2&#xff1a;下载我上传的依赖包 将依赖包引入到项目中 1 将解压后的文件放在你c项目中 2 将rapidjson文…...

编译方式汇总:Makefile\configure\autogen.sh\configure.ac、Makefile.am文件

一、前言 文章目的&#xff1a;针对各种开源项目&#xff0c;由于部分项目文档写的不够详细&#xff0c;&#xff08;或者是我太菜了&#xff09;&#xff0c;没有进行详细的介绍怎么编译该项目&#xff0c;导致花费过多时间在查找如何编译该项目上。因此该篇文章针对目前遇到的…...

explicit关键字

explicit关键字只能用来修饰构造函数。使用explicit可以禁止编译器自动调用拷贝初始化&#xff0c;还可以禁止编译器对拷贝函数的参数进行隐式转换。 那么什么是隐式转换呢&#xff1f; 类 命名 参数&#xff1b; //有参构造类 命名 命名对象&#xff1b; //拷贝构造&#x…...

[优雅的面试] 你了解python的对象吗

前情提要&#xff1a;小编面试&#xff0c;结果面试官着急去吃饭~又约了这次来面&#xff0c;不晓得又会问什么问题呢&#xff1f; 面试官大佬&#xff1a;小伙子来的挺准时的(赞赏的表情~)&#xff0c;今天咱们接着聊哈&#xff0c;小伙子&#xff0c;你有对象了没&#xff1f…...

【hello Linux】线程概念

目录 1. 线程概念的铺设 2. Linux线程概念 2.1 什么是线程 2.2 线程的优点 2.3 线程的缺点 2.4 线程异常 2.5 线程用途 3. Linux进程VS线程 4. Linux线程控制 4.1 POSIX线程库 4.2 创建线程 4.3 进程ID和线程ID 4.4 线程终止 4.5 线程等待 4.6 分离线程 Linux&#x1f337; 1…...

JavaWeb07(MVC应用01[家居商城]连接数据库)

目录 一.什么是MVC设计模式&#xff1f; 1.2 MVC设计模式有什么优点&#xff1f; 二.MVC运用&#xff08;家居商城&#xff09; 2.1 实现登录 2.2 绑定轮播【随机三个商品】 2.2.1 效果预览 index.jsp 2.3 绑定最新上架&热门家居 2.3.1 效果预览 2.3.2 代码实现 数据…...

如何使用电商API接口API接口如何应用

使用API接口 API&#xff08;应用程序接口&#xff09;是现代软件开发中必不可少的一部分&#xff0c;它通常允许软件与其他软件或服务进行交互。使用API可以大大提高软件的灵活性和可扩展性&#xff0c;并允许您轻松添加新的功能和服务&#xff0c;因此&#xff0c;API接口的…...

【移动端网页布局】流式布局案例 ⑥ ( 多排按钮导航栏 | 设置浮动及宽度 | 设置图片样式 | 设置文本 )

文章目录 一、多排按钮导航栏样式及核心要点1、实现效果2、总体布局设计3、设置浮动及宽度4、设置图片样式5、设置文本 二、完整代码实例1、HTML 标签结构2、CSS 样式3、展示效果 一、多排按钮导航栏样式及核心要点 1、实现效果 要实现下面的导航栏效果 ; 2、总体布局设计 该导…...

1. 先从云计算讲起

本章讲解知识点 什么是云计算&#xff1f; 为什么要用云计算&#xff1f; 物理服务器与云服务器对比 云计算服务类型 云计算部署类型 1. 什么是云计算&#xff1f; 云计算是一种通过计算机网络以服务的方式提供动态可伸缩的虚拟化资源的计算模式。按照服务层次分为IaaS、…...

ZooKeeper安装与配置集群

简介: ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件&#xff0c;它提供了一个分布式环境中的高可用性、高性能、有序访问的数据存储&#xff0c;可以让分布式应用程…...

浅谈Mysql的RR和RC隔离级别的主要区别

MySQL默认为RR级别 首先默认RR是因为mysql为了保证在主从同步过程中数据的安全的问题&#xff08;涉及到binlog三种格式&#xff09;。 就是说两个并发事务数AB&#xff0c;A先开启事物最后提交也是最后&#xff0c;事务B开启和提交都在A内部&#xff0c;由于隔离级别不同&…...

Build生成器模式

设计模式简述 设计模式的核心在于提供了相关问题的解决方案&#xff0c;使得人们可以更加简单方便地复用成功的设计和体系结构。 生成器模式&#xff08;创建型设计模式&#xff09; 意图&#xff1a;将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以…...

C++程序设计——常见C++11新特性

一、列表初始化 1.C98中{}的初始化问题 在C98中&#xff0c;允许使用花括号{}对数组元素进行统一的列表初始化值设定&#xff0c;比如&#xff1a; 但是对于一些自定义类型&#xff0c;就无法使用这样的方式进行初始化了&#xff0c;比如&#xff1a; 就无法通过编译&#xff…...

Rust main 函数返回值类型不能是 String

是的&#xff0c;Rust 的 main 函数返回值类型不能是 String。 Rust 的 main 函数只能返回以下几种类型之一&#xff1a; ()&#xff1a;表示空类型&#xff0c;不返回任何值。i32&#xff1a;表示程序的退出码&#xff0c;通常非零值表示执行失败&#xff0c;0 表示执行成功…...

视频里的音乐怎么转换成mp3格式?

视频里的音乐怎么转换成mp3格式&#xff1f;视频里的音乐转换为mp3的原因有很多&#xff0c;主要是因为mp3格式是一种音频格式&#xff0c;文件大小较小&#xff0c;更易于存储和传输。相比之下&#xff0c;视频格式则是一种视频文件格式&#xff0c;虽然包含音频&#xff0c;但…...

CSS3 grid网格布局

文章目录 CSS3 grid网格布局概述grid属性说明使用grid-template-rows & grid-template-columns 定义行高和列宽grid-auto-flow 定义项目的排列顺序grid-auto-rows & grid-auto-columns 定义多余网格的行高和列宽row-gap & column-gap 设置行间距和列间距gap 简写形…...

SPSS如何进行均值比较和T检验之案例实训?

文章目录 0.引言1.均值过程2.单样本T检验3.独立样本T检验4.成对样本T检验 0.引言 因科研等多场景需要进行数据统计分析&#xff0c;笔者对SPSS进行了学习&#xff0c;本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上相关资料进行学习笔记总结&#xff0c;本文对均值…...

Packet Tracer - 配置交换机端口安全

Packet Tracer - 配置交换机端口安全 地址分配表 设备 接口 IP 地址 子网掩码 S1 VLAN 1 10.10.10.2 255.255.255.0 PC1 NIC 10.10.10.10 255.255.255.0 PC2 NIC 10.10.10.11 255.255.255.0 非法笔记本电脑 NIC 10.10.10.12 255.255.255.0 目标 第 1 部…...

一图看懂 aiohttp 模块:基于 asyncio 的异步HTTP网络库, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 aiohttp 模块&#xff1a;基于 asyncio 的异步HTTP网络库, 资料整理笔记&#xff08;大全&#xff09; 摘要模块图类关系图模块全展开【aiohttp】统计常量模块1 aiohttp.hd…...

Linux + 香橙派 + V4L2 + http 实现远程监控摄像头在网页端显示

项目场景&#xff1a; 项目需求&#xff0c;需要做一个基于边缘端的人脸识别远程监控摄像头并在网页前端展示 &#xff0c;这里采用国产香橙派作为边缘计算终端&#xff0c;安装ubuntu系统&#xff0c;系统中采用v4l2接口对摄像头进行获取&#xff0c;当客户端通过网页进行请求…...

做网站需要什么执照/百度推广平台

查询mysql数据库时&#xff0c;同样的输入需要不止一次获取值或者一个查询需要做大量运算时&#xff0c;很容易会想到使用redis缓存。但是如果查询并发量特别大的话&#xff0c;请求redis服务也会特别耗时&#xff0c;这种场景下&#xff0c;将redis迁移到本地减少查询耗时是一…...

做批发服装的网站/互联网营销师证书

在电脑录屏的时候&#xff0c;快捷键能够帮助我们快速操作录屏。那你知道在电脑种有哪些是录屏操作的快捷键吗&#xff1f;其实windows就有自带的录屏的方法。今天分享一些关于电脑录屏的方法&#xff0c;自带的和专业的方法都有&#xff0c;满足我们日常不同的录屏需求。有录屏…...

我国最新疫情最新消息/网站seo推广招聘

背景相信大家都知道电脑自带的记事本【notepad】&#xff0c;也叫记事簿&#xff0c;这个记事本可能大家都有在用&#xff0c;比如在网页上复制一段有着各种超链接、带格式的文字&#xff0c;想要快速去掉格式&#xff0c;聪明的人一般都会直接复制粘贴到记事本里&#xff0c;然…...

郑州品牌网站建设官网/seo关键词优化培训

近日消息 Windows 10 Build 21343 预览版发布&#xff0c;展现了诸多更新和改善&#xff0c;最重要的是文件管理器的图标得到了更新&#xff0c;一改此前清一色的黄色外观&#xff0c;更加容易分辩。外媒 msftnext 提取了该版本操作系统的图标&#xff0c;并公开了下载链接。这…...

网站建设 asp 武汉/天眼查企业查询入口

功能需求&#xff1a; 在监督监理项目的Word报告模块中&#xff0c;要求实现对Word文件内容操作的撤销、重做功能。 实施方案&#xff1a; 采用备忘录模式实现。 要点一&#xff1a;备忘录模式 应用程序在每次操作之后都改变了他的状态。也就是说一个应用程序一旦被操作&#x…...

wordpress网站发布/百度新闻最新消息

词法作用域之外执行函数并可以访问所在词法作用域 当函数可以记住并访问所在的词法作用域&#xff0c;即使函数是在当前词法作用域之外执行&#xff0c;这时 就产生了闭包。 如果没能认出闭包&#xff0c;也不了解它的工作原理&#xff0c;在使用它的过程中就很容易犯错&#…...