nicenote/docs/fea/tools/lerna.md
2021-10-20 12:01:04 +08:00

2.4 KiB
Raw Blame History

nav group
title path
前端 /fea
title order path
💊 工具 9 /tools

lerna

介绍

lerna 是一个包管理工具,方便在大型开源项目中不需要手动开启多个仓库

使用方法

安装

npm i lerna -g

创建子项目

lerna create {packageName}

添加依赖

// 此处用eslint作为案例

// 所有 package 都装
lerna add eslint

// 只有 package1 安装
lerna add eslint --scope=package1

// 符合 prefix 的包都会安装
lerna add esint packages/prefix-*

-dev添加到 devDependencies --exact只安装特定版本

执行 npm script 命令

// 执行所有子项中的 test
lerna run test

// 执行 package1 中的 test
lerna run --scope package1 test

// 只执行除了匹配package-*外项目中的 test
lerna run --ignore package-* test

查看哪些包需要发布

lerna updated
  • 决定哪一个包需要被publish

发布依赖包

learna publish

建议使用 independent 模式,独立对每个依赖包做管理 --npm-client=cnpm 指定源

常见命令

命令 说明
lerna bootstrap 安装依赖
lerna clean 删除各个包下的node_modules
lerna init 创建新的lerna库
lerna list 显示package列表
lerna changed 显示自上次relase tag以来有修改的包 选项通 list
lerna diff 显示自上次relase tag以来有修改的包的差异 执行 git diff
lerna exec 在每个包目录下执行任意命令
lerna run 执行每个包package.json中的脚本命令
lerna add 添加一个包的版本为各个包的依赖
lerna import 引入package
lerna link 链接互相引用的库
lerna create 新建package
lerna publish 发布

官方文档

http://www.febeacon.com/lerna-docs-zh-cn/

Q&A

1. 发布包提示lerna ERR! ENOREMOTEBRANCH Branch 'master' doesn't exist in remote 'origin'.

git remote -v 查看是否是 origin 指向的分支,推送最新分支 lerna publish

2. lerna ERR! E402 You must sign up for private packages

在相应包的 package.json 添加

  {
    ...
    "publishConfig": {
      "access": "public"
    }
  }

使用father打包报错

如果是使用的 yarn 安装的包,改成 cnpm 安装,再试一次