#lerna #monorepo
#lerna #monorepo
Вопрос:
Я использую Lerna при создании библиотеки компонентов с использованием структуры mono-repo. Я хотел бы создать несколько новых файлов в большом количестве пакетов, но, что важно, не В КАЖДОМ пакете.
Обычный я бы запустил:
lerna exec -- touch docs/readme.md
или что-то подобное. Однако я хотел бы распространить эту команду только на пакеты в подкаталоге, например — packages / molecules.
Есть идеи?
Ответ №1:
Вы можете использовать filter options —scope, которые принимают все флаги фильтра
--scope
Включайте только пакеты с именами, соответствующими данному глобусу.
Например.
Создавать readme.md
файл только в packages/pkg-a/docs
каталоге:
⚡ npx lerna exec --scope pkg-a -- touch docs/readme.md
lerna notice cli v3.22.1
lerna notice filter including "pkg-a"
lerna info filter [ 'pkg-a' ]
lerna info Executing command in 1 package: "touch docs/readme.md"
lerna success exec Executed command in 1 package: "touch docs/readme.md"
lerna
версия:
⚡ npx lerna -v
3.22.1
Комментарии:
1. Да, но это применение его к определенному пакету. Я хотел запустить команду для каждого пакета в указанном каталоге. Возможно ли это?
2. Нет, это невозможно. Единственный вариант фильтрации, который в настоящее время поддерживает lerna, — по имени пакета. Вы можете использовать подстановочные знаки, если это поможет.
Ответ №2:
В оболочке:
# This returns all packages with directory and package name
lerna list --all --parseable --long
# We then grep for your directory name
lerna list --all --parseable --long | grep packages/molecules
# We get just the package name
lerna list --all --parseable --long | grep packages/molecules | cut -d ':' -f 2
# We add the --scope flag to each package name and put it all in one line
lerna list --all --parseable --long | grep packages/molecules | cut -d ':' -f 2 | sed 's/^/--scope=/' | xargs
# We now pass all of above into `lerna exec`
lerna exec -- touch docs/readme.md $(yarn lerna list --all --parseable --long | grep packages/molecules | cut -d ':' -f 2 | sed 's/^/--scope=/' | xargs)
Ссылки: