chengaofeng
发布于 2024-06-28 / 24 阅读
0
0

使用lerna和pnpm管理多包项目

lerna官方文档:https://lerna.js.org/docs/getting-started

pnpm官方文档:https://pnpm.io/

mkdir demo
cd demo
# 初始化lerna项目
pnpx lerna init --packages="packages/*"
# 创建第一个包
lerna create core
# 创建第二个包
lerna create ui
# 安装所有包的依赖
pnpm add react -w
# 安装子包依赖
pnpm add @ant-design/pro-components --filter @cgf/ui5
# 每个子包都安装
pnpm install axios -r
# 子包间的依赖
pnpm add @cgf/ui --filter @cgf/ui5
# 多个
pnpm add @cgf/ui --filter @cgf/ui5 --filter @cgf/ui4
# 查看package.json
# "workspace:1.0.0"
# "workspace:*" // * 代表默认同步最新版本,也可以用^1.0.0等方式
# 安装指定版本 "workspace:1.0.1"
pnpm add @cgf/ui@^1.0.0 --filter @cgf/ui5
# 查看依赖关系
pnpm why @cgf/ui5  -r
# 移除依赖
pnpm remove react # 全局
pnpm remove react --filter @cgf/ui5 # 局部
# 构建全部 需要在子包中指定build的script,有顺序依赖关系的自建脚本运行
lerna run build
# 构建子包
lerna run build --scope @cgf/ui5
# pnpm构建
pnpm build -r #全部
pnpm build --filter @cgf-ui5

构建示例:package.json

    "dev": "lerna run dev --stream & dumi dev --verbose",
    "build": "dumi build",
    "test": "dumi test",
    "release": "lerna publish",
    "build:all": "lerna run build --stream",
    "build:core": "lerna run build --scope @cgf/core",
    "build:hooks": "lerna run build --scope @cgf/hooks",
    "build:ui": "lerna run build --scope @cgf/ui",
    "build:ui5": "lerna run build --scope @cgf/ui5",
    "build:devops-ui": "lerna run build --scope @cgf/devops-ui"


评论