Как составить список всех общедоступных рабочих мест с помощью Yarn 2 ?

#yarnpkg #yarn-workspaces #yarnpkg-v2

Вопрос:

Я пытаюсь воссоздать lerna list функциональность с помощью Yarn 2, мне нужно получить список имен каждого общедоступного пакета в рабочей области. yarn workspaces list может перечислить все пакеты на рабочем месте, но он возвращает каждый пакет, включая частный.

Также мне нужен результат в удобном для анализа формате, например JSON, или просто обычный вывод с некоторыми разрывами строк.

Ответ №1:

Оказывается, это довольно сложно, но выполнимо:

 yarn constraints query "workspace(Cwd),   workspace_field(Cwd, 'private', true), workspace_ident(Cwd, Ident)" --json
 

Это даст вам поток NDJSON, подобный этому:

 {"Cwd":"packages/yarnpkg-sdks","Ident":"@yarnpkg/sdks"}
{"Cwd":"packages/yarnpkg-shell","Ident":"@yarnpkg/shell"}