lerna使用指南

lerna版本

以下所有配置命令都是基于v8.1.9,lerna v5 v7版本差别较大,在使用时,注意自身的lerna版本。

lerna开启缓存及缓存配置

nx缓存是v5版本以后才有的,小于该版本的无法使用该功能。

初始化配置

缓存配置文件nx.json,如果没有该配置文件,执行 lerna add-caching命令,会自动创建该文件。

{"targetDefaults": {"build": {"cache": true,"outputs": ["{projectRoot}/lib"]}
}

需要对哪个执行脚本的输出结果进行缓存,就配置对应的命令。这里配置的是缓存build命令的结果。默认缓存输出目录是dist,如果不同,需自定义output目录。其中{projectRoot}为当前package的相对路径,不建议修改。如果需要整个工程目录,用{workspacesRoot}

缓存执行结果

当首次执行lerna run build --scope packageA时,会缓存对应的终端输出结果,以及对应的构建结果文件。在项目根目录会生成.nx文件夹,里面cache子目录下会存放对应的缓存数据。执行结果缓存放在cache目录下一个随机数目录。
在这里插入图片描述

缓存生成以后,下次执行build命令时,如果命中缓存,lerna不会实际执行npm脚本命令,而是从缓存中读取。

清除缓存

删除outputs对应目录下的文件,重新执行build命令,也不能真正重新执行npm,而是从缓存中重新创建对应的输出文件。如果想要清除缓存结果,执行npx nx reset

控制执行方式

如果当前工作区中有多个package,packageA中执行serve命令时,依赖packageB的构建结果,要怎么做?

// packageA 中某文件
import PackageB from 'packageB'
// ....

那我们希望在执行lerna run serve --scope packageA 时,如果packageB没有构建,可以先自动执行packageB的构建。通过配置nx.json中的dependsOn,可以达到。

{"targetDefaults": {"serve": {"dependsOn": ["^build"]}
}

^build表示serve命令,依赖于先执行依赖构建命令。如上面代码示例中,packageA中依赖了packageB,会优先执行packageB的build命令。

工程依赖

如果想查看当前工程下,各个包之间的依赖关系,执行npx nx graph,可以查看包与包之间的依赖

发布包

Fixed: 固定包版本【默认】

lerna publish
当使用固定模式时,所有受影响的包将使用相同的版本发布。在单一版本号模式下运行,版本号在根目录lerna.json中。每次publish时,有更新的包会发布对应的version版本,如果包无更新,则不发布。如果主版本号是0开始,则每次会为所有子包发布新版本。

这样带来的一个问题是,当持续更新某一子包,而其他子包不更新时,Lerna将只对自上一个版本以来更改过的包进行版本和发布,这会导致包的版本随着时间的推移而漂移。
lerna publish --force-publish 可以解决版本漂移问题,强制为所有子包更新版本。

Independent: 独立包版本

npx lerna init --independent 独立模式Lerna项目允许维护者彼此独立地增加软件包版本。将lerna.json中的version设置为independent,使其运行在independent模式
lerna publish from-package 会比较所有包的当前版本与已发布的npm包版本,如果有更新,就会发布对应的包。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

天机学堂笔记1

FeignClient(contextId "course", value "course-service") public interface CourseClient {/*** 根据老师id列表获取老师出题数据和讲课数据* param teacherIds 老师id列表* return 老师id和老师对应的出题数和教课数*/GetMapping("/course/infoB…

NLP中常见的分词算法(BPE、WordPiece、Unigram、SentencePiece)

文章目录 一、基本概念二、传统分词方法2.1 古典分词方法2.2 拆分为单个字符 三、基于子词的分词方法(Subword Tokenization)3.1 主要思想3.2 主流的 Subword 算法3.3 Subword 与 传统分词方法的比较 四、Byte Pair Encoding (BPE)4.1 主要思想4.2 算法过…

搭建Hadoop分布式集群

软件和操作系统版本 Hadoop框架是采用Java语言编写,需要java环境(jvm) JDK版本:JDK8版本 ,本次使用的是 Java: jdk-8u431-linux-x64.tar.gz Hadoop: hadoop-3.3.6.tar.gz 三台Linux虚拟节点: CentOS-7-x86_64-DVD-2…

分享一下使用高版本(3.10.x)sonar-maven-plugin 进行构建时需要注意的两个问题

SonarScanner用来执行源代码分析。这个独立的程序在CI/CD主机上运行,并将分析结果发送到SonarQube服务器,由其计算分析结果,计算质量门并生成报告。我们可以通过命令行和maven构建两种方式来执行SonarScanner的源码分析。关于SonarScanner更多…

C语言---函数和数组实践:扫雷游戏

函数和数组实践:扫雷游戏 在这次的实践项目中,需要编写一个可以在在控制台运行的经典的扫雷游戏。 一、游戏要求 游戏有菜单,可以通过菜单实现继续玩或者退出游戏游戏要求棋盘9*9,雷(10个)要求随机布置可…

数据结构与算法之二叉树: LeetCode 701. 二叉搜索树中的插入操作 (Ts版)

二叉搜索树中的插入操作 https://leetcode.cn/problems/insert-into-a-binary-search-tree/description/ 描述 给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树返回插入后二叉搜索树的根节点。 输入数据 保…

数据集-目标检测系列- 石榴 检测数据集 pomegranate >> DataBall

数据集-目标检测系列- 石榴 检测数据集 pomegranate >> DataBall DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 需要更多数据资源和技术解决方案,知识星球: “DataBall - X 数据球(fre…

项目实战——使用python脚本完成指定OTA或者其他功能的自动化断电上电测试

前言 在嵌入式设备的OTA场景测试和其他断电上电测试过程中,有的场景发生在夜晚或者随时可能发生,这个时候不可能24h人工盯着,需要自动化抓取串口日志处罚断电上电操作。 下面的python脚本可以实现自动抓取串口指定关键词,然后触发…

深入详解DICOM医学影像定位线相关知识:理解定位线的概念、定位线的作用以及定位线显示和计算原理

DICOM医学影像中的定位线(Localization Line) 在医学影像学中,DICOM是用于存储和交换医学影像的标准格式。定位线(Localization Line)在医学影像的显示和分析中起着重要作用,它帮助医生和医学专业人员在影像中精确地标定重要的解剖结构、区域或特征,辅助进行定位、治疗计…

《自动驾驶与机器人中的SLAM技术》ch8:基于 IESKF 的紧耦合 LIO 系统

目录 基于 IESKF 的紧耦合 LIO 系统 1 IESKF 的状态变量和运动过程 1.1 对名义状态变量的预测 1.2 对误差状态变量的预测及对协方差矩阵的递推 2 观测方程中的迭代过程 3 高维观测中的等效处理 4 NDT 和 卡尔曼滤波的联系 5 紧耦合 LIO 系统的主要流程 5.1 IMU 静止初始化 …

HTML实战课堂之简单的拜年程序

一、目录:  一、目录: 二、祝福 三:代码讲解 (1)详细解释: 1.HTML部分 2. CSS部分 三、运行效果(随机截图): 四、完整代码: 二、祝福…

vue 与 vue-json-viewer 实现 JSON 数据可视化

前言 接口的调试和测试是确保系统稳定性的重要步骤。为了让开发人员和测试人员能够直观地查看接口返回的 JSON 数据,使用合适的工具至关重要。vue-json-viewer 插件为 vue 开发者提供了一个简单而强大的解决方案。本文将详细介绍如何在 vue 项目中使用该插件&#x…

用Pygame Zero 画矩形(空心、实心、多个矩形、多层同心矩形、彩虹条矩形、条纹相间、随机颜色矩形、特殊效果、渐变效果)

用Pygame Zero 画矩形 (空心、实心、多个矩形、多层同心矩形、彩虹条矩形、条纹相间、随机颜色矩形、特殊效果、渐变效果) 本文目录: 零、时光宝盒 一、绘制空心矩形 二、绘制实心矩形 三、画多个静止矩形 四、绘制多层同心矩形 4.1、…

【Rust自学】11.9. 单元测试

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 11.9.1. 测试的分类 Rust把测试分为两类,一个是单元测试,一个是集成测试。 单元测试比较小也比较专注&#xff…

[java基础-集合篇]优先队列PriorityQueue结构与源码解析

优先队列PriorityQueue 优先级队列表示为平衡二进制堆: queue[n] 的两个子级是 queue[2*n1] 和 queue[2*(n1)]。 注:左子节点index2*parentIndex1,右子节点index2*parentIndex2,源码中计算parent位置时就是这样反过来计算的 优…

回归预测 | MATLAB实RVM-Adaboost相关向量机集成学习多输入单输出回归预测

回归预测 | MATLAB实RVM-Adaboost相关向量机集成学习多输入单输出回归预测 目录 回归预测 | MATLAB实RVM-Adaboost相关向量机集成学习多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 RVM-Adaboost相关向量机集成学习多输入单输出回归预测是一种先进…

Linux(Centos7)安装Mysql/Redis/MinIO

安装Mysql 安装Redis 搜索Redis最先版本所在的在线安装yum库 查看以上两个组件是否是开机自启 安装MinIO 开源的对象存储服务,存储非结构化数据,兼容亚马逊S3协议。 minio --help #查询命令帮助minio --server --help #查询--server帮助minio serve…

MySQL批量修改数据表编码及字符集为utf8mb4

​​​​​​MySQL批量修改数据表编码及字符集为utf8mb4 utf8mb4编码是utf8编码的超集,兼容utf8,并且能存储4字节的表情字符。 采用utf8mb4编码的好处是:存储与获取数据的时候,不用再考虑表情字符的编码与解码问题。 更改数据库…

Edge浏览器网页设置深色模式/暗模式

文章目录 需求分析1. 浏览器中的设置——外观——深色。2. 在Edge浏览器的地址栏如下网址:edge://flags/,直接搜索Dark则有内容弹出,将Default更改为Enable即可设置成功。3. 成果 需求 长期对着电脑屏幕,白色实在太刺眼&#xff…

TypeScript Jest 单元测试 搭建

NPM TypeScript 项目搭建 创建目录 mkdir mockprojectcd mockproject初始化NPM项目 npm init -y安装TypeScript npm i -D typescript使用VSCode 打开项目 创建TS配置文件tsconfig.json {"compilerOptions": {"target": "es5","module&…