Привязка Lerna Exec к определенной папке

#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)

  

Ссылки:

  1. Список
  2. exec
  3. Фильтры