narzędzie do zarządzania projektami JavaScript z wieloma pakietami.

  • O
  • Wprowadzenie
  • Jak To Działa
  • Rozwiązywanie Problemów
  • Polecenia
  • Różne
  • Lerna.JSON
  • flagi

informacje o

dzielenie dużych baz kodu na oddzielne niezależnie wersjonowane Pakiety jest niezwykle przydatne do udostępniania kodu. Jednak wprowadzanie zmian w wielu repozytoriach jest niechlujne i trudne do śledzenia, a testowanie w różnych repozytoriach komplikuje się bardzo szybko.

aby rozwiązać te (i wiele innych) problemów, niektóre projekty będą organizować swoje bazy kodów w repozytoriach wielopakowych (czasami zwanych monorepos). Projekty takie jak Babel, React, Angular, Ember, Meteor, Jest i wiele innych rozwijają wszystkie swoje pakiety w jednym repozytorium.

Lerna to narzędzie, które optymalizuje przepływ pracy wokół zarządzania repozytoriami wielu pakietów za pomocą git i npm.

Lerna może również zmniejszyć wymagania czasowe i przestrzenne dla wielu kopii pakietów w środowiskach deweloperskich i budujących – zwykle jest to minusem dzielenia projektu na wiele oddzielnych pakietów NPM. Szczegółowe informacje można znaleźć w dokumentacji wciągnika.

jak wygląda Lerna repo?

w sumie niewiele. Masz system plików, który wygląda tak:

my-lerna-repo/ package.json packages/ package-1/ package.json package-2/ package.json

co może zrobić Lerna?

dwie podstawowe komendy w Lernie to lerna bootstrap i lerna publish.

bootstrap połączy zależności w repo razem. publish pomoże opublikować wszystkie zaktualizowane pakiety.

pierwsze kroki

poniższe instrukcje dotyczą Lerna 2.x. zalecamy używanie go zamiast 1.x dla nowego projektu Lerna. Sprawdź wiki, jeśli chcesz zobaczyć 1.X README.

zacznijmy od zainstalowania lerny globalnie z npm.

$ npm install --global lerna

następnie utworzymy nowe repozytorium git:

$ git init lerna-repo$ cd lerna-repo

a teraz przekształćmy go w Lerna repo:

$ lerna init

Twoje repozytorium powinno teraz wyglądać tak:

lerna-repo/ packages/ package.json lerna.json

spowoduje to utworzenie pliku konfiguracyjnego lerna.json oraz folderu packages.

Jak to działa

Lerna umożliwia zarządzanie projektem przy użyciu jednego z dwóch trybów: stałego lub niezależnego.

tryb Stały / zablokowany (domyślnie)

tryb Stały projekty Lerna działają na jednej linii wersji. Wersja jest przechowywana w pliku lerna.json w katalogu głównym projektu pod kluczem version. Po uruchomieniu lerna publish, jeśli moduł został zaktualizowany od czasu ostatniego wydania, zostanie zaktualizowany do nowej wersji, którą wydajesz. Oznacza to, że publikujesz nową wersję pakietu tylko wtedy, gdy tego potrzebujesz.

jest to tryb, którego obecnie używa Babel. Użyj tego, jeśli chcesz automatycznie powiązać wszystkie wersje pakietów. Jednym z problemów związanych z tym podejściem jest to, że poważna zmiana w każdym pakiecie spowoduje, że wszystkie pakiety będą miały nową główną wersję.

tryb niezależny (–independent)

tryb niezależny projekty Lerna pozwalają opiekunom zwiększać wersje pakietów niezależnie od siebie. Za każdym razem, gdy publikujesz, otrzymasz monit dla każdego pakietu, który się zmienił, aby określić, czy jest to zmiana patch, minor, major lub custom.

tryb niezależny pozwala na bardziej szczegółową aktualizację wersji dla każdego pakietu i ma sens dla grupy komponentów. Połączenie tego trybu z czymś w rodzaju semantic-release uczyniłoby go mniej bolesnym. (Prace nad tym są już w atlassian / Lerna-semantic-release).

klucz version w lerna.json jest ignorowany w trybie niezależnym.

Rozwiązywanie problemów

jeśli napotkasz jakiekolwiek problemy podczas korzystania z Lerna, zapoznaj się z naszym dokumentem rozwiązywania problemów, w którym możesz znaleźć odpowiedź na swój problem.

Najczęściej zadawane pytania

Zobacz FAQ.md.

polecenia

init

$ lerna init

Utwórz nowe repozytorium Lerna lub zaktualizuj istniejące repozytorium do bieżącej wersji Lerna.

Lerna zakłada, że repo zostało już zainicjowane za pomocą git init.

po uruchomieniu polecenie to będzie:

  1. Dodaj lerna jako devDependency w package.json, jeśli jeszcze nie istnieje.
  2. Utwórz plik konfiguracyjny lerna.json, aby zapisać numer version.

Przykładowe wyjście na nowym repozytorium git:

$ lerna initlerna info version v2.0.0lerna info Updating package.jsonlerna info Creating lerna.jsonlerna success Initialized Lerna files

–independent, – i

$ lerna init --independent

ta flaga mówi Lernie, aby używała niezależnego trybu wersjonowania.

–exact

$ lerna init --exact

domyślnie lerna init będzie używać zakresu karetki podczas dodawania lub aktualizowania lokalnej wersji lerna, podobnie jak npm install --save-dev lerna.

aby zachować lerna 1.x zachowanie” dokładnego ” porównania, przekaż tę flagę. Skonfiguruje lerna.json, aby wymusić dokładne dopasowanie dla wszystkich kolejnych egzekucji.

{ "lerna": "2.0.0", "command": { "init": { "exact": true } }, "version": "0.0.0"}

bootstrap

$ lerna bootstrap

Bootstrap pakietów w bieżącym repozytorium Lerna. Instaluje wszystkie ich zależności i łączy wszystkie wzajemne zależności.

po uruchomieniu polecenie to będzie:

  1. npm install wszystkie zewnętrzne zależności każdego pakietu.
  2. dowiązanie symboliczne razem wszystkie Lerna packages, które są zależnościami od siebie.
  3. npm prepublish wszystkie bootstrapowane Pakiety.

lerna bootstrap respektuje flagi --ignore, --scope i --include-filtered-dependencies (zobacz flagi).

przekaż dodatkowe argumenty klientowi npm, umieszczając je po --:

$ lerna bootstrap -- --production --no-optional

może być również skonfigurowany w lerna.json:

{ ... "npmClient": "yarn", "npmClientArgs": }

jak działa bootstrap

użyjmy babel jako przykładu.

  • babel-generator i source-map (m.in.) są zależnościami babel-core.
  • babel-core’s package.json wyświetla oba te pakiety jako klucze w dependencies, jak pokazano poniżej.
// babel-core package.json{ "name": "babel-core", ... "dependencies": { ... "babel-generator": "^6.9.0", ... "source-map": "^0.5.0" }}
  • Lerna sprawdza, czy każda zależność jest również częścią repozytorium Lerna.
    • w tym przykładzie babel-generator może być zależnością wewnętrzną, podczas gdy source-map jest zawsze zależnością zewnętrzną.
    • wersja babel-generator w package.json z babel-core jest spełniona przez packages/babel-generator, przekazując wewnętrzną zależność.
    • source-map jest npm installed (lub yarned) jak normalny.
  • packages/babel-core/node_modules/babel-generator dowiązania symboliczne do packages/babel-generator
  • pozwala to na import zagnieżdżonych katalogów

uwagi:

  • jeśli Wersja zależności w pakiecie nie jest spełniona przez pakiet o tej samej nazwie w repo, będzie to npm installed (lub yarned) jak zwykle.
  • Dist-tags, podobnie jak latest, nie spełniają zakresów semver.
  • zależności okrągłe powodują tworzenie okrągłych dowiązań symbolicznych, które mogą mieć wpływ na edytor/IDE.

Webstorm blokuje się, gdy obecne są okrągłe dowiązania symboliczne. Aby temu zapobiec, dodaj node_modulesdo listy ignorowanych plików i folderów w Preferences | Editor | File Types | Ignored files and folders.

publikuj

$ lerna publish

Publikuj pakiety w bieżącym projekcie Lerna. Po uruchomieniu polecenie to wykonuje następujące czynności:

tworzy nowe wydanie zaktualizowanych pakietów. Monity o nową wersję. Tworzy nowy commit/tag git w procesie publikowania na npm.

dokładniej, to polecenie będzie:

  1. Uruchom odpowiednik lerna updated, aby określić, które pakiety mają zostać opublikowane.
  2. jeśli to konieczne, zwiększ klucz version w lerna.json.
  3. zaktualizuj package.json wszystkich zaktualizowanych pakietów do ich nowych wersji.
  4. aktualizuje wszystkie zależności zaktualizowanych pakietów o nowe wersje, określone za pomocą caret (^).
  5. Utwórz nowy commit git i tag dla nowej wersji.
  6. Publikuj zaktualizowane pakiety do npm.

Lerna nie opublikuje pakietów oznaczonych jako prywatne ("private": true w package.json).

–exact

$ lerna publish --exact

po uruchomieniu z tą flagą, publishdokładnie określi zaktualizowane zależności w zaktualizowanych pakietach (bez interpunkcji), zamiast jako zgodne z semver (z ^).

aby uzyskać więcej informacji, zobacz pakiet.dokumentacja zależności json.

–npm-tag

$ lerna publish --npm-tag=next

po uruchomieniu z tą flagą, publish opublikuje do npm z podanym znacznikiem npm dist-tag (domyślnie latest).

tej opcji można użyć do opublikowania wersji prerelease lub beta.

Uwaga: znacznik latest jest używany, gdy użytkownik uruchamia npm install my-package. Aby zainstalować inny tag, użytkownik może uruchomić npm install [email protected].

–canary,- c

$ lerna publish --canary$ lerna publish --canary=beta

po uruchomieniu z tą flagą, publish publikuje pakiety w bardziej szczegółowy sposób (na każdy commit). Przed opublikowaniem na npm, tworzy nowy znacznik version poprzez pobranie bieżącego znacznika version, dodanie go do następnej wersji minor, dodanie podanego przyrostka meta (domyślnie alpha) i dodanie aktualnego git sha (np. 1.0.0 staje się 1.1.0-alpha.81e3b443).

zamierzonym przypadkiem użycia tej flagi jest wydanie na poziom zatwierdzenia lub wydanie nocne.

–conventional-commits

$ lerna publish --conventional-commits

gdy jest uruchamiany z tą flagą,publish użyje specyfikacji Conventional Commits do określenia bump wersji i wygeneruje CHANGELOG

–git-remote

$ lerna publish --git-remote upstream

gdy jest uruchamiany z tą flagą, publishwypchnie zmiany git do podanego pilota zamiast origin.

–skip-Git

$ lerna publish --skip-git

po uruchomieniu z tą flagą, publish opublikuje do npm bez uruchamiania żadnej z komend Gita.

publikuj tylko w npm; pomiń zatwierdzanie, tagowanie i pchanie zmian w Gita (dotyczy to tylko publikowania).

–pomiń-npm

$ lerna publish --skip-npm

po uruchomieniu z tą flagą, publish zaktualizuje wszystkie package.json wersje pakietów i wersje zależności, ale w rzeczywistości nie opublikuje pakietów do npm.

było to przydatne jako obejście problemu npm, który został naprawiony. Podczas publikowania ze zmianami README użyj --skip-npm i wykonaj ostateczną npm publish ręcznie dla każdego pakietu.

tę flagę można połączyć z --skip-git, aby tylko aktualizować wersje i zależności, bez zatwierdzania, tagowania, pchania lub publikowania.

Aktualizuj tylko wersje i zależności; w rzeczywistości nie publikuj (dotyczy to tylko publikowania).

–Wymuś-publikuj

$ lerna publish --force-publish=package-2,package-4# force publish all packages$ lerna publish --force-publish=*

po uruchomieniu z tą flagą, publishwymusi opublikowanie określonych pakietów (oddzielonych przecinkami) lub wszystkich pakietów używając *.

spowoduje to pominięcie lerna updated sprawdzania pod kątem zmienionych pakietów i wymusi aktualizację pakietu, który nie miał zmiany git diff.

–tak

$ lerna publish --canary --yes# skips `Are you sure you want to publish the above changes?`

po uruchomieniu z tą flagą publish pominie wszystkie monity o potwierdzenie. Przydatne w ciągłej integracji (Ci), aby automatycznie odpowiadać na monit potwierdzający publikację.

— cd-version

po uruchomieniu z tą flagą, publish pominie monit wyboru wersji (w trybie niezależnym) i użyje następnej podanej wersji semantycznej. Musisz nadal używać flagi --yes, aby uniknąć wszystkich monitów. Jest to przydatne, gdy systemy kompilacji muszą publikować bez poleceń. Działa zarówno w trybie normalnym, jak i niezależnym.

–pre-id

–repo-version

$ lerna publish --repo-version 1.0.1# applies version and skips `Select a new version for...` prompt

po uruchomieniu z tą flagą, publish pominie okno wyboru wersji i użyje podanej wersji. Przydatne do ominięcia monitu o wprowadzenie użytkownika, jeśli już wiesz, którą wersję opublikować.

–message, -m

po uruchomieniu z tą flagą, publish użyje dostarczonego komunikatu podczas zatwierdzania aktualizacji wersji do publikacji. Przydatne do integracji lerna z projektami, które oczekują, że wiadomości commit będą zgodne z pewnymi wytycznymi, takimi jak projekty, które używają commitizen i/lub semantic-release.

jeśli wiadomość zawiera %s, zostanie ona zastąpiona nowym numerem wersji globalnej poprzedzonym znakiem „v”. Zauważ, że dotyczy to tylko domyślnego trybu wersjonowania „fixed”, ponieważ nie ma wersji „global” przy użyciu --independent.

zaktualizowano

$ lerna updated

sprawdź, które packages zmieniły się od ostatniego wydania (ostatni znacznik git).

Lerna określa ostatni utworzony tag Gita i uruchamia git diff --name-only v6.8.1, aby zmienić wszystkie pliki od tego tagu. Następnie zwraca tablicę pakietów, które mają zaktualizowany plik.

zauważ, że konfiguracja dla polecenia publish wpływa również na polecenie updated. Na przykład config.publish.ignore

–json

$ lerna updated --json

po uruchomieniu z tą flagą, updated zwróci tablicę obiektów w następującym formacie:

Wyczyść

$ lerna clean

Usuń katalog node_modules ze wszystkich pakietów.

lerna clean --ignore, --scope i --yes flagi (zobacz flagi).

diff

$ lerna diff $ lerna diff# diff a specific package$ lerna diff package-name

Diff wszystkich pakietów lub jednego pakietu od ostatniego wydania.

podobne do lerna updated. To polecenie uruchamia git diff.

ls

$ lerna ls

Lista wszystkich pakietów publicznych w bieżącym repozytorium Lerna.

lerna ls --ignore i --scope (zobacz flagi).

— json

$ lerna ls --json

po uruchomieniu z tą flagą, ls zwróci tablicę obiektów w następującym formacie:

Uruchom

Uruchom skrypt npm w każdym pakiecie zawierającym ten skrypt. Podwójne myślniki (--) są niezbędne do przekazania przerywanych argumentów do wykonania skryptu.

lerna run --concurrency, --scope, --ignore, --stream, i --parallel flagi (patrz flagi).

$ lerna run --scope my-component test

Uwaga: zaleca się ograniczenie zakresu tego polecenia (i lerna exec, poniżej) podczas używania flagi --parallel, ponieważ wywołanie dziesiątek podprocesów może być szkodliwe dla równowagi powłoki (lub na przykład maksymalnego limitu deskryptora pliku). YMMV

exec

$ lerna exec -- <command> # runs the command in all packages$ lerna exec -- rm -rf ./node_modules$ lerna exec -- protractor conf.js

Uruchom dowolne polecenie w każdym pakiecie. Double-dash (--) jest konieczne do przekazania znaczników przerywanych do wywołanego polecenia, ale nie jest konieczne, gdy wszystkie argumenty są pozycyjne.

lerna exec --concurrency, --scope, --ignore, i --parallel flagi (patrz flagi).

$ lerna exec --scope my-component -- ls -la

aby wywołać długotrwałe procesy, podaj flagę --parallel :

# transpile all modules as they change in every package$ lerna exec --parallel -- babel src -d lib -w

możesz również uzyskać nazwę bieżącego pakietu poprzez zmienną środowiskowąLERNA_PACKAGE_NAME:

$ lerna exec -- npm view $LERNA_PACKAGE_NAME

możesz również uruchomić skrypt znajdujący się w katalogu głównym, w skomplikowanej strukturze katalogu poprzez zmienną środowiskowąLERNA_ROOT_PATH:

$ lerna exec -- node $LERNA_ROOT_PATH/scripts/some-script.js

podpowiedź: polecenia są wywoływane równolegle, przy użyciu podanej współbieżności (z wyjątkiem --parallel). Wyjście jest przepuszczane, więc nie deterministyczne. Jeśli chcesz uruchomić polecenie w jednym pakiecie po drugim, użyj go w ten sposób:

$ lerna exec --concurrency 1 -- ls -la

–bail

$ lerna exec --bail=<boolean> <command>

ta flaga oznacza, czy polecenie exec powinno wstrzymać wykonywanie po napotkaniu błędu wyrzuconego przez jeden z wywołanych podprocesów. Jego domyślną wartością jest true.

Importuj

$ lerna import <path-to-external-repository>

Importuj pakiet na <path-to-external-repository>, z historią zmian, do packages/<directory-name>. Zachowane są oryginalne autorzy, daty i wiadomości. Commity są stosowane do bieżącej gałęzi.

jest to przydatne do gromadzenia wcześniej istniejących samodzielnych pakietów do repozytorium Lerna. Każdy commit jest modyfikowany tak, aby wprowadzać zmiany względem katalogu pakietów. Tak więc, na przykład, commit, który dodał package.json, zamiast tego doda packages/<directory-name>/package.json.

Misc

Lerna zaloguje się do pliku lerna-debug.log (tak samo jak npm-debug.log), gdy napotka błąd wywołujący polecenie.

Lerna ma również wsparcie dla pakietów scoped.

uruchomienie lerna bez argumentów spowoduje wyświetlenie wszystkich poleceń/opcji.

lerna.json

{ "lerna": "2.0.0", "version": "1.1.3", "commands": { "publish": { "ignore": }, "bootstrap": { "ignore": "component-*" } }, "packages": }
  • lerna: obecnie używana jest wersja Lerna.
  • version: aktualna wersja repozytorium.
  • commands.publish.ignore: tablica globs, która nie będzie zawarta w lerna updated/publish. Użyj tego, aby zapobiec niepotrzebnemu publikowaniu nowej wersji dla zmian, takich jak naprawianie literówki README.md.
  • commands.bootstrap.ignore: tablica globs, która nie zostanie uruchomiona podczas uruchamiania polecenia lerna bootstrap.
  • commands.bootstrap.scope: tablica globs, która ogranicza, które pakiety zostaną uruchomione podczas uruchamiania polecenia lerna bootstrap.
  • packages: tablica Globów do wykorzystania jako lokalizacje pakietów.

wspólne zależności devdeendencies

Większość devDependencies może być wyciągnięta do katalogu głównego repozytorium Lerna.

to ma kilka zalet:

  • wszystkie pakiety używają tej samej wersji danej zależności
  • może utrzymywać zależności w katalogu głównym na bieżąco za pomocą automatycznego narzędzia takiego jak GreenKeeper
  • czas instalacji zależności jest skrócony
  • potrzeba mniej miejsca

zauważ, że devDependencies dostarczanie „binarnych” plików wykonywalnych, które są używane przez skrypty npm nadal muszą być zainstalowane bezpośrednio w każdym pakiecie, w którym są używane.

na przykład zależność nsp jest w tym przypadku konieczna, aby lerna run nsp(i npm run nsp w katalogu pakietu) działała poprawnie:

{ "scripts": { "nsp": "nsp" }, "devDependencies": { "nsp": "^2.3.3" }}

flagi

opcje do Lerna mogą pochodzić z konfiguracji (lerna.json) lub z wiersza poleceń. Dodatkowo opcje w konfiguracji mogą żyć na najwyższym poziomie lub mogą być stosowane do konkretnych poleceń.

przykład:

{ "lerna": "x.x.x", "version": "1.2.0", "exampleOption": "foo", "command": { "init": { "exampleOption": "bar", } },}

w tym przypadku exampleOption będzie ” foo „dla wszystkich poleceń z wyjątkiem init, gdzie będzie „bar”. We wszystkich przypadkach może być nadpisany na ” baz ” w wierszu poleceń za pomocą --example-option=baz.

— współbieżność

ile wątków użyć, gdy Lerna paraleluje zadania (domyślnie jest to 4)

$ lerna publish --concurrency 1

–scope

Scope polecenie do podzbioru pakietów.

$ lerna exec --scope my-component -- ls -la
$ lerna run --scope toolbar-* test

–od

podczas wykonywania skryptu lub polecenia należy przeszukiwać operację do pakietów, które zostały zaktualizowane od podanego ref. Jeśli nie podano ref, domyślnie jest to najnowszy znacznik.

wyświetla zawartość pakietów, które zmieniły się od ostatniego tagu:

$ lerna exec --since -- ls -la

Uruchom testy dla wszystkich pakietów, które zmieniły się od master:

$ lerna run test --since master

Lista wszystkich pakietów, które zmieniły się od some-branch:

$ lerna ls --since some-branch

może to być szczególnie przydatne, gdy jest używane w CI, jeśli możesz uzyskać gałąź docelową, do której będzie wchodził PR, ponieważ możesz użyć tego jako opcji ref do --since. Działa to dobrze w przypadku PRS przechodzących do gałęzi master i feature.

–ignore

wyklucza podzbiór pakietów podczas uruchamiania polecenia.

$ lerna bootstrap --ignore component-*

flaga ignore, gdy jest używana z poleceniem bootstrap, może być również ustawiona w lerna.json pod kluczem commands.bootstrap. Flaga wiersza poleceń przejmie precendencję nad tą opcją.

przykład

{ "lerna": "2.0.0", "version": "0.0.0", "commands": { "bootstrap": { "ignore": "component-*" } }}

Wskazówka: glob jest porównywany z nazwą pakietu zdefiniowaną w package.json, a nie z nazwą katalogu, w którym znajduje się pakiet.

–include-filtered-dependencies

Uwaga: spowoduje to nadpisanie znaczników --scope i --ignore.

tzn. pakiet dopasowany do flagi --ignore będzie nadal uruchamiany, jeśli jest zależny od innego pakietu, który jest uruchamiany.

jest to przydatne w sytuacjach, gdy chcesz „skonfigurować” pojedynczy pakiet, który opiera się na innych pakietach.

$ lerna bootstrap --scope my-component --include-filtered-dependencies# my-component and all of its dependencies will be bootstrapped

–loglevel

jaki poziom logów zgłosić. W przypadku awarii wszystkie logi są zapisywane do lerna-debug.Zaloguj się do bieżącego katalogu roboczego.

wyświetlane są logi o wyższym poziomie niż ustawienie. Domyślną wartością jest „info”.

–max-buffer

ustawia maksymalną długość bufora dla każdego wywołania procesu. Przydatne na przykład, gdy ktoś chce zaimportować repozytorium z większą ilością commitów podczas działania lerna import. W takim przypadku wbudowana długość bufora może nie być wystarczająca.

–no-sort

domyślnie wszystkie zadania wykonują się na pakietach w porządku posortowanym topologicznie, aby respektować zależności tych pakietów. Cykle są łamane na zasadzie najlepszego wysiłku w sposób nie gwarantowany, aby być spójne w całej Lerna invocations.

sortowanie topologiczne może powodować wąskie gardła współbieżności, jeśli istnieje niewielka liczba pakietów z wieloma zależnościami lub jeśli niektóre pakiety wymagają nieproporcjonalnie dużo czasu. Opcja --no-sort wyłącza sortowanie, zamiast tego wykonuje zadania w dowolnej kolejności z maksymalną współbieżnością.

ta opcja może również pomóc, jeśli uruchomisz wiele poleceń „obserwuj”. Ponieważ lerna run będzie wykonywać polecenia w topologicznie posortowanej kolejności, może skończyć się czekaniem na polecenie przed przejściem dalej. Spowoduje to zablokowanie wykonywania poleceń „watch”, ponieważ zwykle nigdy się nie kończą. Przykładem polecenia „watch” jest działanie babel z flagą --watch CLI.

–hoist

zainstaluj zewnętrzne zależności pasujące do glob w katalogu głównym repo, aby były dostępne dla wszystkich pakietów. Wszystkie pliki binarne z tych zależności będą połączone do zależnych pakietów node_modules/.bin/ katalogów, więc będą dostępne dla skryptów npm. Jeśli opcja jest obecna, ale nie podano glob, domyślną wartością jest ** (wciągnij wszystko). Ta opcja dotyczy tylko polecenia bootstrap.

$ lerna bootstrap --hoist

informacje na temat --hoist znajdują się w dokumentacji podnośnika.

Uwaga: Jeśli Pakiety zależą od różnych wersji zewnętrznej zależności, najczęściej używana wersja zostanie podniesiona i zostanie wyświetlone ostrzeżenie.

–nohoist

nie instaluj zewnętrznych zależności pasujących do glob w katalogu głównym repo. Można to wykorzystać do rezygnacji z podnoszenia dla niektórych zależności.

$ lerna bootstrap --hoist --nohoist=babel-*

–npm-client

instaluje zewnętrzne zależności za pomocą install. Musi to być plik wykonywalny, który wie, jak zainstalować zależności npm.

$ lerna bootstrap --npm-client=yarn

można również skonfigurować w lerna.json:

{ ... "npmClient": "yarn"}

–zastosowanie-workspaces

umożliwia integrację ze spacjami roboczymi Yarn (dostępnymi od [email protected]+).
wartości w tablicy są poleceniami, w których Lerna będzie delegować operację do Yarn (obecnie tylko bootstrapping).
jeśli --use-workspaces ma wartość true, to packages zostanie nadpisana wartością z package.json/workspaces.
można również skonfigurować w lerna.json:

{ ... "npmClient": "yarn", "useWorkspaces": true}

–stream

natychmiast streamuj wyjście z procesów potomnych, poprzedzone nazwą pakietu. Pozwala to na przeplatanie danych wyjściowych z różnych pakietów.

$ lerna run watch --stream

–równoległe

podobne do --stream, ale całkowicie pomija współbieżność i sortowanie topologiczne, uruchamiając dane polecenie lub skrypt natychmiast we wszystkich pasujących pakietach z prefiksem strumieniowym. Jest to preferowana Flaga dla długotrwałych procesów, takich jak babel src -d lib -w uruchamianych przez wiele pakietów.

$ lerna exec --parallel -- babel src -d lib -w

–registry

po uruchomieniu z tą flagą, przekazane polecenia npm będą używać określonego rejestru dla Twoich pakietów.

jest to przydatne, jeśli nie chcesz jawnie konfigurować konfiguracji rejestru w całym pakiecie.pliki JSON pojedynczo, gdy np. używa prywatnych rejestrów.

–temp-tag

po przekazaniu, ta flaga zmieni domyślny proces publikowania, najpierw publikując wszystkie zmienione pakiety do tymczasowego dist-tag (lerna-temp), a następnie przenosząc nowe wersje do domyślnego dist-tag (latest).

generalnie nie jest to konieczne, ponieważ Lerna domyślnie publikuje pakiety w porządku topologicznym (wszystkie zależności przed zależnościami).

Wizard

jeśli wolisz wskazówki dotyczące cli (na wypadek, gdybyś miał zacząć używać lerny lub wprowadzić ją do nowego zespołu), możesz polubić Lerna-wizard. Poprowadzi Cię przez szereg dobrze zdefiniowanych kroków:

aktualne Tagi

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.