如何在 Lerna + Yarn Workspaces repo 中安装 npm 包?

Posted

技术标签:

【中文标题】如何在 Lerna + Yarn Workspaces repo 中安装 npm 包?【英文标题】:How to install npm package in Lerna + Yarn Workspaces repo? 【发布时间】:2020-10-17 12:30:21 【问题描述】:

如果我想向一个包添加依赖项,我是否需要将cd 放入该目录并运行yarn add <package>?或者,有没有我可以在根目录中运行的命令,可能带有 --workspace=<workspace-name> 这样的标志?

【问题讨论】:

【参考方案1】:

你不需要cd进入包目录并运行yarn add <package>。您可以在多包存储库的根路径中使用带有--scope 过滤选项的lerna add 命令。

向匹配的包添加单个依赖项

例如,将chalk 依赖添加到packages/pkg-a

 [main] ⚡  npx lerna add chalk --scope pkg-a
lerna notice cli v3.22.1
lerna notice filter including "pkg-a"
lerna info filter [ 'pkg-a' ]
lerna info Adding chalk in 1 package
lerna info bootstrap root only
npm WARN @octokit/plugin-request-log@1.0.3 requires a peer of @octokit/core@>=3 but none is installed. You must install peer dependencies yourself.

added 6 packages from 3 contributors and audited 1319 packages in 4.811s
found 0 vulnerabilities

安装后会在packages/pkg-a/package.json文件的dependencies字段中添加chalk


  "name": "pkg-a",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": 
    "start": "node app.js",
    "test": "jest --config jest.config.js"
  ,
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": 
    "chalk": "^4.1.0",
    "express": "^4.17.1"
  

lerna版本:

[main] ⚡  npx lerna -v     
3.22.1

【讨论】:

以上是关于如何在 Lerna + Yarn Workspaces repo 中安装 npm 包?的主要内容,如果未能解决你的问题,请参考以下文章

Yarn + Lerna + Angular Libs = 出版失败?

Lerna、yarn 和 Typescript:找不到模块或其对应的类型声明

使用 yarn 工作区和 lerna 优先构建顺序

Yarn workspace + lerna 在每个子包中创建 node_modules

基于 Yarn WorkSpace + Lerna + OrangeCI 搭建 Typescript Monorepo 项目实践

在 Netlify Monorepo (Yarn Workspace/Lerna) 上使用 UI 库作为 Web 应用程序的依赖项