# 开启 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/