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

多包管理工具

一.bolt(停止维护)

公共库组件的特征之一就是代码复用率很高,改其中一部分代码,大部分组件就都需要更新一遍依赖,所以如何快速更新依赖、添加版本号、发布组件、上传组件代码就成了一个问题。这里我使用了bolt来批量管理组件的迭代

1.安装工具

首先使用 yarn 将 Bolt 安装到全局环境中:

yarn global add bolt

2.创建Bolt

Create a new Bolt package in the current directory:

bolt init//在当前目录下创建新的bolt

bolt init --yes //将已有的文件夹转变为bolt

/**如果报错bolt不是命令,可以用npm重新安装bolt,命令如下 */
// npm i bolt --global

当前目录下会出现一个package.json

{
  "name": "normal-charts",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "bolt": {
    "workspaces": [
      "src/*"
    ]
  },
  "devDependencies": {
    "standard-version": "^9.3.2"
  },
  "dependencies": {
    "@easyv/charts": "^1.1.8"
  }
}

3.Bolt文件

将相同依赖包/需批量操作的代码库放入文件

 "scripts": {
    "start": "easyv dev",
    "publishToTest": "easyv publish --host=online basicAreaV2"
  },

4.Bolt的使用

主要使用场景示例

//批量发布组件
bolt ws run publishToTest  
//批量更新公共库
bolt ws exec -- npm install @easyv/charts  
bolt ws exec -- git pull    
bolt ws exec -- git add .   
bolt ws exec -- git commit -m "测试批量提交" 
bolt ws exec -- git push origin master  

注:windows电脑用powershell可能会无法执行批量命令,可以试试把终端切换成git bash

二.lerna

优势:

社区较大,维护活跃,依赖更加灵活,支持清理依赖(lerna clean),支持链接本地依赖(lerna bootstrap)

1.安装并初始化

mkdir lerna-repo 
cd  目标文件
npx lerna init

这将会创建一个 lerna.json 配置文件和一个 package 文件夹,如下

lerna-repo/
  packages/
  package.json
  lerna.json

2.两种模式(Fixed 和 Independent

  • Fixed 模式:所有包共享一个版本号,适合紧密相关的包。(默认)

  • Independent 模式:每个包有独立的版本号,适合相对独立的包(lerna init --independent)

3.文件

lerna:

{
  "version": "0.0.0", // 版本管理模式
  "packages": ["packages/*"], // 包的位置
  "npmClient": "yarn", // 包管理器
  "useWorkspaces": true, // 是否使用 Yarn Workspaces
  "command": {
    "publish": {
      "ignoreChanges": ["*.md"], // 忽略的文件
      "message": "chore(release): publish", // 提交信息
      "registry": "https://registry.npmjs.org/" // 发布到的 npm 仓库
    },
    "bootstrap": {
      "hoist": true // 提升依赖
    }
  }
}

同时你可以在每个子项目中定义相同的脚本,这样使用lerna运行的时候就会自动查找脚本并依次运行,代码如下

{
  "scripts": {
    "build": "tsc -p .",
    "test": "jest"
  }
}

直接运行lerna build即可运行所有子项目

如果觉得每一个文件定义很麻烦,可以直接在根目录packge.json中定义脚本

{
  "scripts": {
    "publishToTest": "lerna exec -- easyv publish --host=online basicAreaV2"
  }
}
npm run publishToTest

并且运行全局脚本即可每个子项目运行

同样的也可以定义命令过滤或者选中某些文件

4.常见命令


1、lerna bootstrap
初始化项目依赖以及建立link关系以及预发布处理

2、lerna publish
lerna publish做了一套npm标准的发布流程管理

3、lerna changed
用来查看发生改变的package,即预发布的包

4、lerna clean
用来清空所有package的node_moudles依赖

5、lerna run
用来执行每个package下的scripts命令

6、lerna add

3.Nx

Lerna 和 Yarn Workspaces 专注于包的管理和发布,而 Nx 则同时涵盖了开发、构建、测试、依赖管理和性能优化等多个方面。并且Nx兼容lerna


http://www.kler.cn/a/594836.html

相关文章:

  • 删除菜品接口
  • 软考高级信息系统管理工程师通关100题(21-40)附记忆口诀
  • 支持向量机SVM的MATLAB分类预测实现
  • 华为IPD研发管理体系的3大核心框架解析
  • HOW - 平时如何保持学习和成长?
  • vscode/windsurf/trae无法识别junit的@Test注解解决办法
  • 如何在 C++ 中运行 DeepSeek R1 LLM
  • AES 简介 以及 C# 和 js 实现【加密知多少系列_3】
  • 用PaddleNLP为GPT-2模型制作FineWeb二进制预训练数据集
  • 【总结】常用API架构类型
  • R语言绘图:小提琴图
  • redis的lua脚本
  • python+requests实现的接口自动化测试
  • 剖析塔能科技:能源精准节能进阶核心驱动力
  • HarmonyOS Next~HarmonyOS应用开发工具:DevEco Testing
  • 阿里云CEN创建实验
  • 设计模式-单一职责
  • 手撕算法之`vector` 扩容、`string` 分割、链表翻转
  • HTTP和RPC的区别
  • 基于AT89C51单片机的自动贩卖机设计