Et verktøy for å administrere JavaScript-prosjekter med flere pakker.
- Om
- Komme I Gang
- Slik Fungerer Det
- Feilsøking
- Kommandoer
- Diverse
- Lerna.json
- Flagg
Om
Splitting opp store kodebaser i separate uavhengig versjonerte pakker er svært nyttig for kodedeling. Å gjøre endringer på tvers av mange repositorier er imidlertid rotete og vanskelig å spore, og testing på tvers av repositorier blir komplisert veldig fort.
for å løse disse (og mange andre) problemer, vil noen prosjekter organisere sine kodebaser i flere pakkelagre (noen ganger kalt monorepos). Prosjekter som Babel, React, Angular, Ember, Meteor, Jest og mange andre utvikler alle sine pakker i et enkelt depot.
Lerna er et verktøy som optimaliserer arbeidsflyten rundt håndtering av flerpakkelagre med git og npm.
Lerna kan også redusere tid og plassbehov for mange kopier av pakker i utviklings – og byggemiljøer-normalt en ulempe ved å dele et prosjekt i mange separate NPM-pakker. Se taljedokumentasjonen for detaljer.
hvordan ser En lerna repo ut?
det er faktisk veldig lite til det. Du har et filsystem som ser slik ut:
my-lerna-repo/ package.json packages/ package-1/ package.json package-2/ package.json
Hva Kan Lerna gjøre?
de to primære kommandoene I Lerna er lerna bootstrap
og lerna publish
.
bootstrap
vil koble avhengigheter i repo sammen. publish
vil bidra til å publisere eventuelle oppdaterte pakker.
Komme I Gang
instruksjonene nedenfor gjelder For Lerna 2.x. vi anbefaler at du bruker den i stedet for 1.x for et Nytt Lerna-prosjekt. Sjekk wiki hvis du trenger å se 1.x README.
La Oss starte med å installere lerna globalt med npm.
$ npm install --global lerna
Neste lager vi et nytt git-depot:
$ git init lerna-repo$ cd lerna-repo
og nå la oss gjøre det til En Lerna repo:
$ lerna init
depotet ditt skal nå se slik ut:
lerna-repo/ packages/ package.json lerna.json
Dette vil skape en lerna.json
konfigurasjonsfil samt en packages
mappe.
Slik Fungerer Det
Lerna lar deg administrere prosjektet ved hjelp Av en Av To moduser: Fast eller Uavhengig.
Fast / Låst modus (standard)
Fast modus Lerna-prosjekter opererer på en enkelt versjonslinje. Versjonen holdes i lerna.json
– filen ved roten til prosjektet ditt under version
– tasten. Når du kjører lerna publish
, hvis en modul har blitt oppdatert siden forrige gang en utgivelse ble gjort, vil den bli oppdatert til den nye versjonen du slipper. Dette betyr at du bare publiserer en ny versjon av en pakke når du trenger det.
Dette er modusen Som Babel bruker for øyeblikket. Bruk dette hvis du vil automatisk knytte alle pakkeversjoner sammen. Et problem med denne tilnærmingen er at en stor endring i en pakke vil resultere i at alle pakker har en ny hovedversjon.
Uavhengig modus (–uavhengig)
Uavhengig modus Lerna projects lar vedlikeholdere å øke pakkeversjoner uavhengig av hverandre. Hver gang du publiserer, vil du få en melding for hver pakke som er endret for å angi om det er en patch, mindre, større eller tilpasset endring.
Uavhengig modus lar deg mer spesifikt oppdatere versjoner for hver pakke og gir mening for en gruppe komponenter. Kombinere denne modusen med noe som semantisk utgivelse ville gjøre det mindre smertefullt. (Det er arbeid på dette allerede på atlassian / lerna-semantic-release).
version
– tasten ilerna.json
ignoreres i uavhengig modus.
Feilsøking
hvis du støter på problemer mens Du bruker Lerna, vennligst sjekk Ut Vårt Feilsøkingsdokument hvor du kan finne svaret på problemet ditt.
Ofte stilte spørsmål
Se FAQ.md.
Kommandoer
init
$ lerna init
Opprett en ny lerna repo eller oppgrader en eksisterende repo til gjeldende versjon Av Lerna.
Lerna antar at repo allerede er initialisert med
git init
.
når du kjører, vil denne kommandoen:
- Legg til
lerna
som endevDependency
ipackage.json
hvis den ikke allerede finnes. - Opprett en
lerna.json
config-fil for å lagreversion
– nummeret.
Eksempelutgang på en ny git repo:
$ lerna initlerna info version v2.0.0lerna info Updating package.jsonlerna info Creating lerna.jsonlerna success Initialized Lerna files
–uavhengig, – i
$ lerna init --independent
dette flagget ber Lerna om å bruke uavhengig versjonsmodus.
–exact
$ lerna init --exact
som standard vil lerna init
bruke et caret-område når du legger til eller oppdaterer den lokale versjonen av lerna
, akkurat som npm install --save-dev lerna
.
for å beholde lerna
1.x oppførsel av «eksakt» sammenligning, pass dette flagget. Det vil konfigurere lerna.json
for å håndheve eksakt samsvar for alle påfølgende henrettelser.
{ "lerna": "2.0.0", "command": { "init": { "exact": true } }, "version": "0.0.0"}
bootstrap
$ lerna bootstrap
Bootstrap pakkene i gjeldende lerna repo. Installerer alle sine avhengigheter og kobler noen kryss avhengigheter.
når du kjører, vil denne kommandoen:
-
npm install
alle eksterne avhengigheter av hver pakke. - Symlink sammen alle Lerna
packages
som er avhengigheter av hverandre. -
npm prepublish
alle bootstrappede pakker.
lerna bootstrap
respekterer flaggene --ignore
, --scope
og --include-filtered-dependencies
(Se Flagg).
Send ekstra argumenter til npm-klienten ved å plassere dem etter --
:
$ lerna bootstrap -- --production --no-optional
kan også konfigureres i lerna.json
:
{ ... "npmClient": "yarn", "npmClientArgs": }
Hvordan bootstrap
fungerer
La oss bruke babel
som et eksempel.
-
babel-generator
ogsource-map
(blant andre) er avhengigheter avbabel-core
. -
babel-core
‘spackage.json
viser begge disse pakkene som nøkler idependencies
, som vist nedenfor.
// babel-core package.json{ "name": "babel-core", ... "dependencies": { ... "babel-generator": "^6.9.0", ... "source-map": "^0.5.0" }}
- Lerna sjekker om hver avhengighet er også en del Av Lerna repo.
- i dette eksemplet kan
babel-generator
være en intern avhengighet, menssource-map
alltid er en ekstern avhengighet. - versjonen av
babel-generator
ipackage.json
avbabel-core
er fornøyd medpackages/babel-generator
, passerer for en intern avhengighet. -
source-map
ernpm install
ed (elleryarn
ed) som normalt.
- i dette eksemplet kan
-
packages/babel-core/node_modules/babel-generator
symlinks tilpackages/babel-generator
- dette tillater nestet katalogimport
Notater:
- Når en avhengighetsversjon i en pakke ikke er fornøyd med en pakke med samme navn i repo, vil det være
npm install
ed (elleryarn
ed) som normalt. - Dist-tagger, som
latest
, tilfredsstiller ikke semver-områder. - Sirkulære avhengigheter resulterer i sirkulære symlinker som kan påvirke redaktøren/IDE.
Webstorm låser seg når sirkulære symlinker er til stede. For å forhindre dette, legg til node_modules
i listen over ignorerte filer og mapper i Preferences | Editor | File Types | Ignored files and folders
.
publiser
$ lerna publish
Publiser pakker i det aktuelle lerna-prosjektet. Når kjør, gjør denne kommandoen følgende:
Oppretter en ny versjon av pakkene som er oppdatert. Ber om en ny versjon. Oppretter en ny git commit / tag i ferd med å publisere til npm.
mer spesifikt vil denne kommandoen:
- Kjør tilsvarende
lerna updated
for å finne ut hvilke pakker som skal publiseres. - øk om nødvendig
version
– tasten ilerna.json
. - Oppdater
package.json
av alle oppdaterte pakker til deres nye versjoner. - Oppdater alle avhengigheter av de oppdaterte pakkene med de nye versjonene, angitt med en firkant (^).
- Opprett en ny git commit og tag for den nye versjonen.
- Publiser oppdaterte pakker til npm.
Lerna vil ikke publisere pakker som er merket som private (
"private": true
ipackage.json
).
–nøyaktig
$ lerna publish --exact
når du kjører med dette flagget, vil publish
spesifisere oppdaterte avhengigheter i oppdaterte pakker nøyaktig (uten tegnsetting), i stedet for som semver kompatibel (med en ^
).
se pakken for mer informasjon.json avhengigheter dokumentasjon.
–npm-tag
$ lerna publish --npm-tag=next
når du kjører med dette flagget, vil publish
publisere til npm med gitt npm dist-tag (standard til latest
).
Dette alternativet kan brukes til å publisere en prerelease
eller beta
versjon.
Notat:
latest
– koden er den som brukes når en bruker kjørernpm install my-package
. For å installere en annen tag, kan en bruker kjørenpm install [email protected]
.
–canary, – c
$ lerna publish --canary$ lerna publish --canary=beta
når du kjører med dette flagget, publiserer publish
pakker på en mer granulær måte (per commit). Før publisering til npm, oppretter den den nye version
– taggen ved å ta den nåværende version
, bumping den til neste mindre versjon, legge til det angitte meta-suffikset (standard til alpha
) og legge til gjeldende git sha (ex: 1.0.0
blir 1.1.0-alpha.81e3b443
).
tiltenkt bruk tilfelle for dette flagget er en per commit nivå utgivelse eller nattlig utgivelse.
–konvensjonell-inger
$ lerna publish --conventional-commits
når du kjører med dette flagget, vil publish
bruke Den Konvensjonelle Inger-Spesifikasjonen for å bestemme versjonsbump og generere CHANGELOG
–git-remote
$ lerna publish --git-remote upstream
når du kjører med dette flagget, vil publish
skyve git-endringene til den angitte fjernkontrollen i stedet for origin
.
–skip-git
$ lerna publish --skip-git
når du kjører med dette flagget, vil publish
publisere til npm uten å kjøre noen av git-kommandoene.
bare publiser til npm; hopp over å begå, merke og skyve git-endringer (dette påvirker bare publish).
–skip-npm
$ lerna publish --skip-npm
når du kjører med dette flagget, vil publish
oppdatere alle package.json
pakkeversjoner og avhengighetsversjoner, men det vil faktisk ikke publisere pakkene til npm.
Dette var nyttig som en løsning for et npm-problem som siden har blitt løst. Når du publiserer MED README-endringer, bruk
--skip-npm
og gjør den endeligenpm publish
for hånd for hver pakke.
dette flagget kan kombineres med --skip-git
for å bare oppdatere versjoner og avhengigheter, uten å begå, merke, skyve eller publisere.
bare oppdater versjoner og avhengigheter; ikke publiser (dette påvirker bare publiser).
–force-publish
$ lerna publish --force-publish=package-2,package-4# force publish all packages$ lerna publish --force-publish=*
når du kjører med dette flagget, vil publish
tvinge publiser de angitte pakkene (kommaseparert) eller alle pakker med *
.
dette vil hoppe over
lerna updated
se etter endrede pakker og tvinger en pakke som ikke har engit diff
endring som skal oppdateres.
–ja
$ lerna publish --canary --yes# skips `Are you sure you want to publish the above changes?`
når du kjører med dette flagget, vil publish
hoppe over alle bekreftelsesmeldinger. Nyttig I Kontinuerlig integrasjon (CI) for å automatisk svare på publiseringsbekreftelsesprompten.
–cd-versjon
når du kjører med dette flagget, vil publish
hoppe over versjonsvalgmeldingen (i uavhengig modus) og bruke den neste angitte semantiske versjonen. Du må fortsatt bruke flagget --yes
for å unngå alle meldinger. Dette er nyttig når bygge systemer må publisere uten ledetekster. Fungerer i både normale og uavhengige moduser.
–pre-id
— repo-versjon
$ lerna publish --repo-version 1.0.1# applies version and skips `Select a new version for...` prompt
når du kjører med dette flagget, vil publish
hoppe over versjonsvalg og bruke den angitte versjonen. Nyttig for å omgå brukerinngangsprompten hvis du allerede vet hvilken versjon du skal publisere.
–message, -m
når du kjører med dette flagget, vil publish
bruke den angitte meldingen når du forplikter versjonsoppdateringene for publisering. Nyttig for å integrere lerna i prosjekter som forventer commit meldinger å følge visse retningslinjer, for eksempel prosjekter som bruker commitizen og / eller semantisk-release.
hvis meldingen inneholder %s
, vil den bli erstattet med det nye globale versjonsnummeret prefiks med en «v». Merk at dette bare gjelder når du bruker standard «fast» versjonsmodus, da det ikke er noen «global» versjon når du bruker --independent
.
oppdatert
$ lerna updated
Sjekk hvilke packages
har endret seg siden siste utgivelse(siste git-tag).
lerna bestemmer den siste git-taggen som er opprettet og kjører git diff --name-only v6.8.1
for å få alle filer endret siden den taggen. Den returnerer deretter en rekke pakker som har en oppdatert fil.
Merk at konfigurasjonen for kommandoen publish
også påvirker kommandoen updated
. For eksempel config.publish.ignore
–json
$ lerna updated --json
når du kjører med dette flagget, vil updated
returnere en rekke objekter i følgende format:
rengjør
$ lerna clean
Fjern node_modules
katalogen fra alle pakker.
lerna clean
respekterer flaggene --ignore
, --scope
og --yes
(Se Flagg).
diff
$ lerna diff $ lerna diff# diff a specific package$ lerna diff package-name
Diff Alle pakker eller en enkelt pakke siden siste utgivelse.
Ligner
lerna updated
. Denne kommandoen kjørergit diff
.
ls
$ lerna ls
Oppgi alle de offentlige pakkene i dagens lerna repo.
lerna ls
respekterer flaggene --ignore
og --scope
(Se Flagg).
–json
$ lerna ls --json
når du kjører med dette flagget, ls
vil returnere en rekke objekter i følgende format:
kjør
Kjør et npm-skript i hver pakke som inneholder skriptet. En dobbel strek (--
) er nødvendig for å sende stiplede argumenter til skriptutførelsen.
lerna run
respekterer --concurrency
, --scope
, --ignore
, --stream
, og --parallel
flagg (Se Flagg).
$ lerna run --scope my-component test
Merk: det anbefales å begrense omfanget av denne kommandoen (og
lerna exec
nedenfor) når du bruker flagget--parallel
, da gyting av dusinvis av underprosesser kan være skadelig for skallets sinnsro (eller maksimal filbeskrivelsesgrense, for eksempel). YMMV
exec
$ lerna exec -- <command> # runs the command in all packages$ lerna exec -- rm -rf ./node_modules$ lerna exec -- protractor conf.js
Kjør en vilkårlig kommando i hver pakke. En dobbel-dash (--
) er nødvendig for å sende stiplede flagg til gytt kommandoen, men er ikke nødvendig når alle argumentene er posisjonelle.
lerna exec
respekterer --concurrency
, --scope
, --ignore
, og --parallel
flagg (Se Flagg).
$ lerna exec --scope my-component -- ls -la
for å gyte langvarige prosesser, pass --parallel
flagget:
# transpile all modules as they change in every package$ lerna exec --parallel -- babel src -d lib -w
du kan også få navnet på den gjeldende pakken gjennom miljøvariabelen LERNA_PACKAGE_NAME
:
$ lerna exec -- npm view $LERNA_PACKAGE_NAME
Du kan også kjøre et skript som ligger i root dir, i en komplisert dir-struktur gjennom miljøvariabelen LERNA_ROOT_PATH
:
$ lerna exec -- node $LERNA_ROOT_PATH/scripts/some-script.js
Hint: kommandoene er gytt parallelt, ved hjelp av samtidighet gitt (unntatt med
--parallel
). Utgangen er rør gjennom, så ikke deterministisk. Hvis du vil kjøre kommandoen i en pakke etter hverandre, bruk den slik:
$ lerna exec --concurrency 1 -- ls -la
–bail
$ lerna exec --bail=<boolean> <command>
dette flagget betyr om kommandoen exec
skal stoppe utførelsen ved å møte en feil kastet av en av de gyttede delprosessene. Standardverdien er true
.
import
$ lerna import <path-to-external-repository>
Importer pakken på <path-to-external-repository>
, med commit-historie, til packages/<directory-name>
. Opprinnelige forplikte forfattere, datoer og meldinger er bevart. Inger brukes på gjeldende gren.
dette er nyttig for å samle eksisterende frittstående pakker i En Lerna repo. Hver commit er endret for å gjøre endringer i forhold til pakkekatalogen. Så, for eksempel, commit som lagt til package.json
vil i stedet legge til packages/<directory-name>/package.json
.
Diverse
Lerna vil logge på en lerna-debug.log
fil (samme som npm-debug.log
) når det oppstår en feil som kjører en kommando.
Lerna har også støtte for omfangsrike pakker.
Kjører lerna
uten argumenter vil vise alle kommandoer / alternativer.
lerna.json
{ "lerna": "2.0.0", "version": "1.1.3", "commands": { "publish": { "ignore": }, "bootstrap": { "ignore": "component-*" } }, "packages": }
-
lerna
: den nåværende versjonen Av Lerna blir brukt. -
version
: den gjeldende versjonen av depotet. -
commands.publish.ignore
: en rekke globs som ikke vil bli inkludert ilerna updated/publish
. Bruk dette til å hindre publisering av en ny versjon unødvendig for endringer ,for eksempel å fikse enREADME.md
skrivefeil. -
commands.bootstrap.ignore
: en rekke globs som ikke vil bli bootstrapped når du kjører kommandoenlerna bootstrap
. -
commands.bootstrap.scope
: en rekke globs som begrenser hvilke pakker som skal bootstrapped når du kjører kommandoenlerna bootstrap
. -
packages
: Rekke globs å bruke som pakke steder.
Vanlige devDependencies
De fleste devDependencies
kan trekkes opp til roten Av En Lerna repo.
Dette har noen fordeler:
- alle pakker bruker samme versjon av en gitt avhengighet
- Kan holde avhengigheter ved roten oppdatert med et automatisert verktøy som GreenKeeper
- Avhengighetsinstallasjonstid reduseres
- Mindre lagring er nødvendig
Merk at devDependencies
gir «binære» kjørbare filer som brukes av npm-skript må fortsatt installeres direkte i hver pakke der de Brukes.
for eksempel er nsp
avhengighet nødvendig i dette tilfellet for lerna run nsp
(og npm run nsp
i pakkenes katalog) for å fungere riktig:
{ "scripts": { "nsp": "nsp" }, "devDependencies": { "nsp": "^2.3.3" }}
Flagg
Alternativer Til Lerna kan komme fra konfigurasjon (lerna.json
) eller på kommandolinjen. I tillegg alternativer i config kan leve på øverste nivå eller kan brukes til bestemte kommandoer.
Eksempel:
{ "lerna": "x.x.x", "version": "1.2.0", "exampleOption": "foo", "command": { "init": { "exampleOption": "bar", } },}
i dette tilfellet vil exampleOption
være «foo» for alle kommandoer unntatt init
, hvor det vil være «bar». I alle tilfeller kan det overstyres til » baz » på kommandolinjen med --example-option=baz
.
–samtidighet
Hvor mange tråder Som skal brukes når Lerna parallelizes oppgavene (standard til 4
)
$ lerna publish --concurrency 1
–scope
Scopes en kommando til et delsett av pakker.
$ lerna exec --scope my-component -- ls -la
$ lerna run --scope toolbar-* test
–siden
når du utfører et skript eller en kommando, omfang operasjonen til pakker som er oppdatert siden den angitte ref
. Hvis ref
ikke er angitt, er den som standard den nyeste taggen.
Oppgi innholdet i pakker som har endret seg siden den siste taggen:
$ lerna exec --since -- ls -la
Kjør testene for alle pakker som har endret seg siden master
:
$ lerna run test --since master
Oppgi alle pakker som har endret seg siden some-branch
:
$ lerna ls --since some-branch
Dette kan være spesielt nyttig når det brukes I CI, hvis du kan få målgrenen EN PR vil gå inn i, fordi du kan bruke det som ref
til --since
alternativet. Dette fungerer bra For PRs går inn master samt funksjonen grener.
–ignorer
Utelukker et delsett av pakker når du kjører en kommando.
$ lerna bootstrap --ignore component-*
ignore
flagget, når det brukes med kommandoen bootstrap
, kan også settes i lerna.json
under commands.bootstrap
– tasten. Kommandolinjeflagget vil ta forrang over dette alternativet.
Eksempel
{ "lerna": "2.0.0", "version": "0.0.0", "commands": { "bootstrap": { "ignore": "component-*" } }}
Hint: globen matches mot pakkenavnet som er definert i
package.json
, ikke katalognavnet pakken lever i.
–inkluder-filtrert-avhengigheter
Merk: dette vil overstyre
--scope
og--ignore
flaggene.dvs. en pakke matchet av flagget
--ignore
vil fortsatt bli bootstrapped hvis den er avhengig av en annen pakke som blir bootstrapped.
Dette er nyttig for situasjoner der du vil «sette opp» en enkelt pakke som er avhengig av at andre pakker blir satt opp.
$ lerna bootstrap --scope my-component --include-filtered-dependencies# my-component and all of its dependencies will be bootstrapped
–loglevel
hvilket nivå av logger som skal rapporteres. Ved feil blir alle logger skrevet til lerna-debug.logg inn i gjeldende arbeidskatalog.
alle logger på et høyere nivå enn innstillingen vises. Standard er «info».
–max-buffer
Angi en maks bufferlengde for hvert underliggende prosessanrop. Nyttig for eksempel når noen ønsker å importere en repo med en større mengde inger mens du kjører lerna import
. I så fall kan den innebygde bufferlengden ikke være tilstrekkelig.
–no-sort
som standard utføres alle oppgaver på pakker i topologisk sortert rekkefølge for å respektere avhengighetsforholdene til de aktuelle pakkene. Sykluser brytes på best mulig måte på en måte som ikke garanteres å være konsistente på Tvers Av lerna-invokasjoner.
Topologisk sortering kan forårsake flaskehalser for samtidighet hvis det er et lite antall pakker med mange pårørende, eller hvis noen pakker tar uforholdsmessig lang tid å utføre. Alternativet --no-sort
deaktiverer sortering, i stedet utfører oppgaver i en vilkårlig rekkefølge med maksimal samtidighet.
Dette alternativet kan også hjelpe hvis du kjører flere» watch » – kommandoer. Siden lerna run
vil utføre kommandoer i topologisk sortert rekkefølge, kan det ende opp med å vente på en kommando før du går videre. Dette vil blokkere kjøring når du kjører» watch » – kommandoer, siden de vanligvis aldri slutter. Et eksempel på en» watch » – kommando kjører babel
med --watch
cli-flagget.
–hoist
Installer eksterne avhengigheter som samsvarer glob
ved repo-roten, slik at de er tilgjengelige for alle pakker. Eventuelle binærfiler fra disse avhengighetene vil bli koblet til avhengige pakke node_modules/.bin/
kataloger, slik at de er tilgjengelige for npm-skript. Hvis alternativet er til stede, men ingen glob
er gitt, er standard **
(heise alt). Dette alternativet påvirker bare kommandoen bootstrap
.
$ lerna bootstrap --hoist
for bakgrunn på --hoist
, se taljedokumentasjonen.
Merk: hvis pakker avhenger av forskjellige versjoner av en ekstern avhengighet, vil den mest brukte versjonen bli heist, og en advarsel vil bli sendt ut.
–nohoist
ikke installer eksterne avhengigheter som samsvarer glob
ved repo-roten. Dette kan brukes til å velge bort heising for visse avhengigheter.
$ lerna bootstrap --hoist --nohoist=babel-*
–npm-klient
Installer eksterne avhengigheter ved hjelp av install
. Må være en kjørbar som vet hvordan du installerer npm-avhengigheter.
$ lerna bootstrap --npm-client=yarn
kan også konfigureres i lerna.json
:
{ ... "npmClient": "yarn"}
–bruk-arbeidsområder
Muliggjør integrasjon Med Garn Arbeidsområder (tilgjengelig siden [email protected]+).
verdiene i arrayet er kommandoene Der Lerna vil delegere operasjon Til Garn (for tiden bare bootstrapping).
hvis --use-workspaces
er sant, blir packages
overstyrt av verdien fra package.json/workspaces.
kan også konfigureres i lerna.json
:
{ ... "npmClient": "yarn", "useWorkspaces": true}
–stream
Stream utdata fra underordnede prosesser umiddelbart, prefiks med navnet på opprinnelig pakke. Dette gjør at utgang fra forskjellige pakker som skal interleaved.
$ lerna run watch --stream
–parallell
Ligner på --stream
, men ignorerer helt samtidighet og topologisk sortering, kjører en gitt kommando eller skript umiddelbart i alle matchende pakker med prefiks streaming utgang. Dette er det foretrukne flagget for langvarige prosesser som babel src -d lib -w
kjører over mange pakker.
$ lerna exec --parallel -- babel src -d lib -w
–register
når du kjører med dette flagget, vil videresendte npm-kommandoer bruke det angitte registeret for pakken(e).
dette er nyttig hvis du ikke vil eksplisitt sette opp registerkonfigurasjonen i hele pakken.json filer individuelt når f. eks ved hjelp av private registre.
–temp-tag
når bestått, vil dette flagget endre standard publiseringsprosessen ved først å publisere alle endrede pakker til en midlertidig dist-tag (lerna-temp
) og deretter flytte den nye versjonen(e) til standard dist-tag (latest
).
dette er generelt ikke nødvendig, Da Lerna vil publisere pakker i topologisk rekkefølge (alle avhengigheter før avhengige) som standard.
Wizard
hvis du foretrekker litt veiledning for cli (hvis du skal begynne å bruke lerna eller introdusere den til et nytt lag), kan du kanskje like lerna-wizard. Det vil lede deg gjennom en rekke veldefinerte trinn: