yarn和lerna初始化项目

454 阅读2分钟

lerna是monerepo代表,搭配yarn workspace更方便。

讲解视频

github项目

【前置条件】第一步先登录你npm或者你私库

// npmjs 设置发布源头
npm config set registry https://registry.npmjs.org

// 登录
npm login 

后续账号密码登录等等

装lerna和yarn

npm i -g lerna yarn

lerna建空项目 lerna init

  • 执行 lerna init,会创建git仓库
md lerna-yarn-demo
cd lerna-yarn-demo
lerna init 

修改lerna配置使用yarn workspace

  1. lerna.json 中声明使用 yarn workspace 进行依赖管理:
{
  ...
  "npmClient": "yarn",
  "useWorkspaces": true
}
  1. root/package.json 下必需包含 workspaces 数组,与 lerna.json 下的 packages 保持一致:
{
  "private": true, // 工作空间不需要发布
  ...
  "workspaces": ["packages/*"]
}

提交到git仓库

git add .
git commit -m "first commit"
git remote add origin https://github.com/rootegg/lerna-yarn-demo.git
git push -u origin master

lerna create 建包

lerna create company-ui

lerna create company-util

lerna create company-cli

新建包之后都需要执行 yarn install

yarn install 初始化安装包

yarn install

相互安装依赖包 yarn workspace add

装包两种情况

给company-ui项目[安装/移除]已发布的包

yarn workspance company-ui [add/remove] lodash  

可以看到只在 company-ui 的package.json中多了包,其他项目中没有增加lodash

而且,lodash包装在了根目录下 node_modules

"dependencies": {
    "lodash": "^4.17.21"
 }

注意:没有给所有项目[安装/移除]包命令,需要一个一个包自己装,下面这个命令是错误的,没有这个命令

yarn workspances [add/remove] vue

给company-u安装未发布的包,关联内部包

lerna add [内部未发布的包] --scope company-ui // 因为未发布的包使用yarn workspace会报错 

包修改版本 lerna version

需要先手动git add和commit信息

git add .

git commit -m "registry modify"

lerna version

lerna version 的作用是打tag和push到git仓库

image.png

image.png

包发布 lerna publish

注意:

  • 查看packages下面每个package.json的pubicConfig指定了发布源

包发布 lerna publish from-package

因为上面我们是单独执行的 lerna version

所以发布需要执行

lerna publish from-package

当然 lerna publish = lerna version + lerna publish from-package

第一次运行clone项目

直接在根目录执行 yarn install 就行了

发布某个之前tag

比如现在执行了 lerna version 已经打tag和推送到了服务器

继续在写代码,后面需要把上次的tag发布上去

  • 先切换到 tag上 npm checkout v0.1.3

  • 再执行发布 lerna publish from-package