Как в Yarn 2 я могу использовать общие зависимости в рабочих областях?
В основном такой же вопрос, как это, но для пряжи 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
который предоставляется в родительском элементе app.
2 ответа
https://yarnpkg.com/advanced/qa
Малоизвестная функция 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"
}
}