如何在Yarn 2中共享工作区中的常见依赖关系?

问题描述

this几乎是相同的问题,但对于yarn2。我将共享依赖项放在层次结构的顶部。我相信我目前不使用PnP。

.yarnrc.yaml

nodeLinker: node-modules
yarnPath: .yarn/releases/yarn-2.2.2.cjs

在最顶层,我要调用typescript一个“工作区”中安装了tsc(但我想这可能是任何带有二进制文件的模块),但是它是{ {1}}我也注意到了一些警告。 command not found: tsc(在应用程序的父级中提供)。

解决方法

https://yarnpkg.com/advanced/qa#how-to-share-scripts-between-workspaces

鲜为人知的Yarn功能:可以从任何工作空间调用名称中带有冒号(build:foo)的任何脚本。另一个鲜为人知的功能:$ INIT_CWD将始终指向运行脚本的目录。放在一起,您可以编写可以以这种方式重复使用的脚本:

{
  "dependencies": {
    "typescript": "^3.8.0"
  },"scripts": {
    "g:tsc": "cd $INIT_CWD && tsc"
  }
}

然后,从任何包含其自己的tsconfig.json的工作区中,您都可以调用TypeScript:

{
  "scripts": {
    "build": "yarn g:tsc"
  }
}
,

您可以将 -T,--top-level 标志与 yarn run 一起使用。它将查找根级别的依赖项。

{
  "scripts": {
    "tsc": "yarn run -T tsc"
  }
}

https://yarnpkg.com/cli/run