Как в 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.


person xenoterracide    schedule 03.09.2020    source источник


Ответы (1)


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"
  }
}
person xenoterracide    schedule 04.09.2020