littlebot
Published on 2025-04-15 / 2 Visits
0

【源码】基于Node.js的Lerna多包管理系统

项目简介

本项目基于Node.js构建,利用Lerna框架来管理多个JavaScript包。Lerna能优化使用gitnpm管理多软件包代码仓库的工作流程,简化多包项目的依赖管理与版本控制,助力开发者在单个仓库高效管理多个npm包,实现代码和工具的共享。

项目的主要特性和功能

  1. 多包管理模式灵活:有固定/锁定模式(默认)和独立模式。固定模式通过lerna.json统一管理版本,部分包改动会使所有包版本号升级;独立模式可对每个package单独设置版本号。
  2. 依赖管理便捷:能轻松管理和同步多包间的依赖关系,使用lerna add安装依赖,lerna link链接依赖,lerna import导入存在的包。
  3. 构建与测试高效:提供便捷方式运行构建和测试命令,可在所有包中统一执行,如用lerna exec执行shell脚本,lerna run执行npm命令。
  4. 版本控制精准:可管理和更新多包的版本号,保持版本同步,使用lerna version修改版本号,lerna changed查看变更,lerna diff查看差异。
  5. 发布流程简单:提供简便方法将多包发布到npm仓库,使用lerna publish发布项目。
  6. 代码质量保障:集成eslint检查代码质量,Prettier统一代码风格,stylelint规范样式代码,editorconfig协同团队代码风格。
  7. Git钩子管理:通过huskylint - stagedgit commit前检查代码,用commitizen@commitlint/cli规范提交信息。

安装使用步骤

环境准备

确保系统已安装Node.js。

全局安装工具

  1. 安装Lerna:npm install -g lerna
  2. 配置安装源(可选):npm install -g yrmnpm install -g nrm

项目初始化

  1. 创建新的git代码仓库:mkdir lerna - demo && cd lerna - demo
  2. 将仓库转变为Lerna仓库:lerna init

创建和管理包

  1. 创建包:lerna create <package - name> --registry <registry - url>
  2. 添加依赖:lerna add <dependency - name> packages/<package - name>
  3. 链接依赖:lerna link
  4. 重新安装依赖:lerna bootstrap

开发和测试

  1. 执行shell脚本:lerna exec -- <script - name>
  2. 执行npm命令:lerna run <script - name>
  3. 清空依赖:lerna clean

代码检查与格式化

  1. 安装eslintPrettierstylelint等工具:npm i eslint prettier eslint - plugin - prettier stylelint --save - dev
  2. 配置相关规则文件(如.eslintrc.js.prettierrc.js.stylelintrc.js
  3. package.json中添加脚本: json "scripts": { "test": "jest", "lint": "eslint --ext .js packages/**/*.js --no - error - on - unmatched - pattern --fix", "lint - staged": "lint - staged - c ./.husky/.lintstagedrc.js", "prepare": "husky install", "commit": "git - cz" }

配置Git钩子

  1. 安装Git钩子相关工具:npm i husky lint - staged commitizen @commitlint/{config - conventional,cli} --save - dev
  2. 初始化Git钩子:npm set - script prepare "husky install"; git init; npm run prepare
  3. 添加pre - commit钩子:npx husky add .husky/pre - commit "lint - staged"
  4. 配置commit - msg钩子:
    • 安装配置commitizen@commitlint
    • 配置.commitlintrc.js
    • 添加命令:npx husky add .husky/commit - msg "npx --no - install commitlint --edit $1"

发布上线

  1. 添加pre - push钩子:npx husky add .husky/pre - push "npm run test"
  2. 修改版本号:lerna version
  3. 发布项目:lerna publish

调试源码(可选)

创建vscode启动调试的配置文件:.vscode/launch.json json { "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Launch Program", "skipFiles": ["<node_internals>/**"], "program": "${workspaceFolder}/source/lerna/core/lerna/cli.js", "args": ["ls"] } ] }

创建npm私服(可选)

  1. 安装verdaccionpm install verdaccio - g
  2. 启动私服:verdaccio
  3. 登录发布:
    • npm adduser --registry http://localhost:4873/
    • npm publish --registry http://localhost:4873/
  4. 本地访问:http://localhost:4873

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】