当前位置: 首页 > 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;可以让分布式应用程…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

Python 高效图像帧提取与视频编码:实战指南

Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...