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

lerna 是多项目在一个 git 空间下管理的工具。 yarn 的 workspace 也有同样的功效。

一般是 yarn 用来跑项目,lerna 用来 npm 发版

package.json

{
  "name": "root",
  "private": true,
  "workspaces": ["packages/*"], // 这个配置是给yarn用的
  "devDependencies": {
    "lerna": "^4.0.0"
  }
}

lerna.json

{
  "packages": [
    "packages/*" 
  ],
  "npmClient": "yarn", // 这里指定使用yarn去管理包
  "useWorkspaces": true, // 使用yarn的workspace管理包
  "version": "0.0.0"
}

配置好上述之后,直接执行yarn会安装所有的子项目的依赖,并且把公共依赖抽出来到跟项目的node_modules下去,子项目里能复用的依赖会link到根目录的node_modules去。 常用指令:

  • yarn workspace xxx run dev,这里的xxx是子项目package.json中的name。当然也可以cd进子项目直接运行yarn run dev,效果一样。
  • lerna import ../someProgram,这里的../someProgram是要导入到主工程的子项目。参数详见文档