Lerna

news/2024/10/20 15:47:26/

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,如果版本相同也不会发布成功如果项目中没有修改,内容和上次版本一样,也不会发布成功
    

http://www.ppmy.cn/news/61375.html

相关文章

6.1.1 图:基本概念

一,基本概念 1.基本定义 (1)图的定义 顶点集不可以是空集,但边集可以是空集。 (2) 有向图的表示: 圆括号 无向图的表示: 尖括号 简单图、多重图: 简单图:…

强化学习_06_pytorch-TD3实践(BipedalWalkerHardcore-v3)

基于策略的离线算法TD3 1.1 简介 reference: openai-TD3 DDPG的critic会高估, 从而导致actor策略失败。TD3是增加了三个关键技巧优化DDPG。经过优化后的TD3(Twin Dalayed DDPG 双延迟深度确定性策略梯度算法)适合于具有高维连续动作空间的任务。 Tricks: Clipped Double Q-l…

java调用cmd命令

1.首先,我们需要了解一下 java是如何调用 cmd的: 6.在实际的开发中,我们有可能会遇到 java调用 cmd命令的情况: 7.对于一些特定的环境下,例如在嵌入式系统中,那么我们可以使用下面这种方式来调用 cmd命令&a…

搭建Linux依赖环境

目录 1、jdk(基于yum进行安装 ) 2、Tomcat (手动下载安装) 3、MariaDB(基于yum进行安装) 安装 启动 测试连接 1、jdk(基于yum进行安装 ) 可以使用yum list | grep [关键词…

3 ROS2服务通讯基础

ROS2服务通讯基础 3.1 服务通讯介绍3.2 ROS2服务通讯的基本流程3.2.1 创建ROS2服务通讯功能包的基本流程3.2.2 创建ROS2服务通讯功能包示例 3.3 使用C/C实现ROS2服务通讯3.3.1 创建C/C服务通讯服务端功能包并编写节点文件3.3.2 配置C/C服务通讯服务端功能包3.3.3 编译并运行C/C…

基于matlab的长短期神经网络lstm的股票预测

目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络LSTM的股票预测 MATALB编程实现,附有代码,及链接基于matlab编程的的长短期神经网络LSTM的股票价格的预测,基于深度学习神经网络的股票价格预测-深度学习文档类资源-CSDN文库…

数据结构(六)—— 二叉树(4)回溯

文章目录 一、题1 257 二叉树的所有路径1.1 写法11.2 写法2 一、题 1 257 二叉树的所有路径 1.1 写法1 递归回溯:回溯是递归的副产品,只要有递归就会有回溯 首先考虑深度优先搜索;而题目要求从根节点到叶子的路径,所以需要前序…

Docker安装常用软件-Nacos

一、单机部署 官方网站:什么是 Nacos 1、下载最新nacos镜像 docker pull nacos/nacos-server 2、新建映射文件夹 --nacos/conf/application.properties --nacos/logs --nacos/sql ①application文件 # # Copyright 1999-2021 Alibaba Group Holding Ltd. #…