Niubaobao / lerna-demo

lerna-monorepo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

# 开启 yarn workspaces:

```
yarn config set workspaces-experimental true
```

# 创建项目

```
mkdir lerna-demo && cd lerna-demo
yarn init
```

# lerna 初始化:

```
lerna init
```

# 配置根目录下的 lerna.json 使用 yarn 客户端并使用 workspaces:

```
// lerna.json
{
  "packages": [
    "packages/*"
  ],
  "version": "0.0.0",
+ "npmClient": "yarn",
+ "useWorkspaces": true
}
```

# package.json 设置 private 为 true,防止根目录被发布到 npm,还要设置 workspaces 目录:

```
// package.json
{
  "name": "lerna-demo",
+ "private": true,
+ "workspaces": [
+    "packages/*"
+ ]
}
```

# 如果是所有的包公用的依赖,可以像这样安装:

```
lerna add lodash
```

# 此示例中我们设定 ui 依赖 core:

```
lerna add wdm-lerna-demo-core --scope=wdm-lerna-demo-ui
```

```
import myCore from 'wdm-lerna-demo-core'
```

# 如果你想要移除一个被所有包依赖的公共包,可以这样操作

```
lerna exec -- yarn remove lodash
# lerna exec -- yarn remove lodash --network-timeout=1000000 # 如果提示网络有问题用此命令

lerna exec -- <command> [..args] 表示在所有包中执行该 command.
```

# lerna publish

```
让你选择如何更新版本,是 major、minor 或是 beta。
更新版本到有改动的包,即修改 package.json 的 version。
如果有某些包依赖刚才更新的包,自动更新 dependencies 的版本号。
把改动提交到 git 并生成以版本号命名的 git commit 和 tag。
发布刚才改动的并且是 public 的包到 npm。
```



# 安装依赖
```
npm install lodash -r --filter @MyVue/shared

-r表示在workspace工作区执行命令,--filter xxx 表示指定在哪个包下执行。
```




# https://wangtunan.github.io/blog/vueNextAnalysis/introduction/

About

lerna-monorepo

License:MIT License


Languages

Language:JavaScript 100.0%