6

大部分与此问题相同,但对于纱线 2。我将共享依赖项放在层次结构的顶部。我相信我目前没有使用 PnP。

.yarnrc.yaml

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

typescript在我想要调用的“工作区”之一中,我已经安装了(但我认为这可能是任何带有二进制文件的模块)的最高级别tsc,但是command not found: tsc我也注意到了一些警告,例如。graph@workspace:app-lib/graph/packages/app doesn't provide jest@>=24 <25 requested by ts-jest@npm:24.3.0这是在应用程序的父级中提供的。

4

2 回答 2

6

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"
  }
}
于 2020-09-04T17:34:06.370 回答
0

您可以将-T,--top-level标志与yarn run. 它将寻找根级别的依赖关系。

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

https://yarnpkg.com/cli/run

于 2021-08-06T12:19:50.230 回答