een tool voor het beheren van JavaScript projecten met meerdere pakketten.

  • Ongeveer
  • Aan De Slag
  • Hoe Werkt Het
  • Problemen Oplossen
  • Opdrachten
  • Misc
  • Lerna.json
  • Flags

ongeveer

het opsplitsen van grote codebases in afzonderlijke pakketten met onafhankelijke versiebeheer is uiterst nuttig voor het delen van code. Echter, het maken van wijzigingen in veel repositories is rommelig en moeilijk te volgen, en het testen van alle repositories wordt erg snel ingewikkeld.

om deze (en vele andere) problemen op te lossen, zullen sommige projecten hun codebases organiseren in multi-package repositories (soms monorepos genoemd). Projecten als Babel, React, Angular, Ember, Meteor, Jest en vele anderen ontwikkelen al hun pakketten binnen één repository.

Lerna is een tool die de workflow optimaliseert rond het beheren van multi-package repositories met git en npm.

Lerna kan ook de tijd-en ruimtevereisten verminderen voor talrijke kopieën van pakketten in ontwikkelings – en bouwomgevingen-normaal gesproken een nadeel van het opdelen van een project in veel afzonderlijke NPM-pakketten. Zie de hoist documentatie voor details.

hoe ziet een Lerna repo eruit?

er is eigenlijk heel weinig aan de hand. Je hebt een bestandssysteem dat er zo uitziet:

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

wat kan Lerna doen?

de twee primaire commando ‘ s in Lerna zijn lerna bootstrap en lerna publish.

bootstrap koppelt afhankelijkheden in de repo aan elkaar. publish helpt bij het publiceren van bijgewerkte pakketten.

aan de slag

de onderstaande instructies zijn voor Lerna 2.x. we raden aan om het te gebruiken in plaats van 1.x voor een nieuw Lerna project. Controleer de wiki als je de 1 wilt zien.x README.

laten we beginnen met het installeren van Lerna globaal met npm.

$ npm install --global lerna

volgende zullen we een nieuwe Git repository maken:

$ git init lerna-repo$ cd lerna-repo

en nu maken we er een Lerna repo van.:

$ lerna init

je repository zou er nu zo uit moeten zien:

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

dit zal een lerna.json configuratiebestand en een packages map aanmaken.

Hoe werkt het

Lerna staat u toe om uw project te beheren met behulp van een van de twee modi: vast of onafhankelijk.

vaste / vergrendelde modus (standaard)

Vaste Modus Lerna-projecten werken op één versielijn. De versie wordt bewaard in het lerna.json bestand aan de root van uw project onder de version sleutel. Wanneer u lerna publish uitvoert, zal een module die is bijgewerkt sinds de laatste keer dat een release is gemaakt, worden bijgewerkt naar de nieuwe versie die u aan het vrijgeven bent. Dit betekent dat je alleen een nieuwe versie van een pakket publiceert wanneer dat nodig is.

Dit is de modus die Babel momenteel gebruikt. Gebruik dit als u alle pakketversies automatisch aan elkaar wilt koppelen. Een probleem met deze aanpak is dat een grote verandering in elk pakket zal resulteren in alle pakketten hebben een nieuwe hoofdversie.

Independent mode (–independent)

Independent mode Lerna projects stelt beheerders in staat om pakketversies onafhankelijk van elkaar te verhogen. Elke keer dat u publiceert, krijgt u een prompt voor elk pakket dat is gewijzigd om aan te geven of het een patch, kleine, grote of aangepaste wijziging.

onafhankelijke modus stelt u in staat om meer specifiek versies voor elk pakket bij te werken en is zinvol voor een groep componenten. Het combineren van deze modus met iets als semantic-release zou het minder pijnlijk maken. (Er is hier al werk aan bij atlassian / lerna-semantic-release).

de version sleutel in lerna.json wordt in onafhankelijke modus genegeerd.

probleemoplossing

als u problemen ondervindt tijdens het gebruik van Lerna, raadpleeg dan ons probleemoplossend document waar u het antwoord op uw probleem kunt vinden.

Vaak Gestelde Vragen

zie ook FAQ.md.

commando ‘ s

init

$ lerna init

Maak een nieuwe Lerna repo aan of upgrade een bestaande repo naar de huidige versie van Lerna.

Lerna gaat ervan uit dat de repo al is geïnitialiseerd met git init.

tijdens het uitvoeren zal dit commando:

  1. voeg lerna toe als devDependency in package.json als deze nog niet bestaat.
  2. Maak een lerna.json configuratiebestand aan om het version – nummer op te slaan.

voorbeeld uitvoer op een nieuwe Git repo:

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

–onafhankelijk, – i

$ lerna init --independent

deze vlag vertelt Lerna om onafhankelijke versiemodus te gebruiken.

— exact

$ lerna init --exact

standaard gebruikt lerna init een cursor-bereik bij het toevoegen of bijwerken van de lokale versie van lerna, net als npm install --save-dev lerna.

behouden lerna 1.x gedrag van “exacte” vergelijking, geef deze vlag. Het zal lerna.json configureren om exacte overeenkomst af te dwingen voor alle volgende executies.

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

bootstrap

$ lerna bootstrap

Bootstrap de pakketten in de huidige Lerna repo. Installeert al hun afhankelijkheden en koppelt alle cross-afhankelijkheden.

wanneer uitgevoerd, zal dit commando:

  1. npm install alle externe afhankelijkheden van elk pakket.
  2. Symlink samen alle Lerna packages die afhankelijkheden van elkaar zijn.
  3. npm prepublish alle bootstrapped pakketten.

lerna bootstrap respecteert de vlaggen --ignore, --scope en --include-filtered-dependencies (zie vlaggen).

geef extra argumenten door aan NPM-client door ze na --:

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

kan ook worden geconfigureerd in lerna.json:

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

hoe bootstrap werkt

laten we babel als voorbeeld gebruiken.

  • babel-generator en source-map (onder andere) zijn afhankelijkheden van babel-core.
  • babel-core’s package.json geeft beide pakketten weer als sleutels in dependencies, zoals hieronder weergegeven.
// babel-core package.json{ "name": "babel-core", ... "dependencies": { ... "babel-generator": "^6.9.0", ... "source-map": "^0.5.0" }}
  • Lerna controleert of elke afhankelijkheid ook deel uitmaakt van de Lerna repo.
    • in dit voorbeeld kan babel-generator een interne afhankelijkheid zijn, terwijl source-map altijd een externe afhankelijkheid is.
    • aan de versie van babel-generator in de package.json van babel-core wordt voldaan door packages/babel-generator, die overgaat op een interne afhankelijkheid.
    • source-map is npm installed (of yarned) zoals normaal.
  • packages/babel-core/node_modules/babel-generator symlinks naar packages/babel-generator
  • dit staat geneste mapimport toe

opmerkingen:

  • wanneer een afhankelijkheidsversie in een pakket niet wordt voldaan door een pakket met dezelfde naam in de repo, zal het npm installed (of yarned) zijn zoals normaal.
  • Dist-tags, zoals latest, voldoen niet aan semver-bereiken.
  • circulaire afhankelijkheden resulteren in circulaire symlinks die van invloed kunnen zijn op uw editor/IDE.

Webstorm vergrendelt wanneer er circulaire symlinks aanwezig zijn. Om dit te voorkomen, voegt u node_modules toe aan de lijst met genegeerd bestanden en mappen in Preferences | Editor | File Types | Ignored files and folders.

publiceer

$ lerna publish

Publiceer pakketten in het huidige Lerna-project. Bij het uitvoeren doet dit commando het volgende:

maakt een nieuwe release aan van de pakketten die zijn bijgewerkt. Vraagt om een nieuwe versie. Maakt een nieuwe git commit / tag aan in het proces van publiceren naar npm.

meer specifiek zal dit commando:

  1. voer het equivalent van lerna updated uit om te bepalen welke pakketten moeten worden gepubliceerd.
  2. indien nodig, verhoog de version sleutel in lerna.json.
  3. werk de package.json van alle bijgewerkte pakketten bij naar hun nieuwe versies.
  4. werk alle afhankelijkheden van de bijgewerkte pakketten bij met de nieuwe versies, gespecificeerd met een cursor (^).
  5. Maak een nieuwe git commit en tag aan voor de nieuwe versie.
  6. bijgewerkte pakketten publiceren naar npm.

Lerna zal geen pakketten publiceren die gemarkeerd zijn als privé ("private": true in de package.json).

–exact

$ lerna publish --exact

wanneer uitgevoerd met deze vlag, zal publish bijgewerkte afhankelijkheden specificeren in bijgewerkte pakketten exact (zonder interpunctie), in plaats van als semver compatibel (met een ^).

voor meer informatie, zie het pakket.JSON afhankelijkheden documentatie.

–npm-tag

$ lerna publish --npm-tag=next

wanneer uitgevoerd met deze vlag, zal publish publiceren naar npm met de gegeven NPM dist-tag (standaard latest).

deze optie kan worden gebruikt om een versie prerelease of beta te publiceren.

Noot: de tag latest wordt gebruikt wanneer een gebruiker npm install my-packageuitvoert. Om een andere tag te installeren, kan een gebruiker npm install [email protected]draaien.

–canary, – c

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

wanneer deze vlag wordt uitgevoerd, publiceert publish pakketten op een meer gedetailleerde manier (per commit). Voordat het naar npm wordt gepubliceerd, maakt het de nieuwe version tag aan door de huidige version te nemen, deze naar de volgende kleine versie te stoten, het meegeleverde meta achtervoegsel toe te voegen (standaard alpha) en de huidige Git sha toe te voegen (ex: 1.0.0 wordt 1.1.0-alpha.81e3b443).

de beoogde use case voor deze vlag is een per commit niveau release of nachtelijke release.

–conventional-commits

$ lerna publish --conventional-commits

wanneer uitgevoerd met deze vlag, zal publish de conventionele Commits specificatie gebruiken om de versie bump te bepalen en changelog

–git-remote

$ lerna publish --git-remote upstream

wanneer uitgevoerd met deze vlag, zal publish de git wijzigingen naar de opgegeven remote pushen in plaats van origin.

— skip-git

$ lerna publish --skip-git

wanneer uitgevoerd met deze vlag, zal publish publiceren naar npm zonder een van de git commando ‘ s uit te voeren.

alleen publiceren naar npm; sla committen, taggen en pushen van git wijzigingen over (dit heeft alleen invloed op Publiceren).

–skip-npm

$ lerna publish --skip-npm

wanneer deze vlag wordt uitgevoerd, zal publish alle package.json pakketversies en afhankelijkheidsversies bijwerken, maar het zal de pakketten niet daadwerkelijk naar npm publiceren.

dit was nuttig als oplossing voor een npm-probleem dat sindsdien is opgelost. Bij het publiceren met readme wijzigingen, gebruik --skip-npm en doe de uiteindelijke npm publish met de hand voor elk pakket.

deze vlag kan worden gecombineerd met --skip-git om alleen versies en afhankelijkheden bij te werken, zonder te committen, taggen, pushen of publiceren.

alleen versies en afhankelijkheden bijwerken; niet publiceren (dit heeft alleen invloed op Publiceren).

–forceer-publiceer

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

wanneer deze vlag wordt uitgevoerd, zal publish de gespecificeerde pakketten (gescheiden door komma ‘ s) of alle pakketten met *afdwingen.

dit slaat de lerna updated controle op gewijzigde pakketten over en dwingt een pakket dat geen git diff wijziging had te worden bijgewerkt.

–Ja

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

wanneer uitgevoerd met deze vlag, zal publish alle bevestigingsmeldingen overslaan. Handig bij continue integratie (CI) om automatisch de publicatiebevestiging te beantwoorden.

— cd-version

wanneer deze vlag wordt uitgevoerd, zal publish de versieselectieprompt overslaan (in onafhankelijke modus) en de volgende gespecificeerde semantische versie gebruiken. U moet nog steeds de --yes vlag gebruiken om alle prompts te vermijden. Dit is handig wanneer bouwsystemen moeten publiceren zonder opdrachtprompt. Werkt in zowel normale als onafhankelijke modi.

— pre-id

— repo-version

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

wanneer uitgevoerd met deze vlag, zal publish de versieselectieprompt overslaan en de opgegeven versie gebruiken. Handig voor het omzeilen van de user input prompt als u al weet welke versie te publiceren.

— message, – m

wanneer uitgevoerd met deze vlag, zal publish het opgegeven Bericht gebruiken bij het committen van de versieupdates voor publicatie. Handig voor het integreren van lerna in projecten die verwachten dat commit berichten zich houden aan bepaalde richtlijnen, zoals projecten die commitizen en/of semantic-release gebruiken.

als het bericht %s bevat, zal het worden vervangen door het nieuwe algemene versienummer, voorafgegaan door een “v”. Merk op dat dit alleen van toepassing is bij gebruik van de standaard “vaste” versiemodus, aangezien er geen “globale” versie is bij gebruik van --independent.

bijgewerkt

$ lerna updated

Controleer welke packages veranderd zijn sinds de laatste release (de laatste Git tag).

Lerna bepaalt de laatste Git tag aangemaakt en voert git diff --name-only v6.8.1 uit om alle bestanden te veranderen sinds die tag. Het retourneert dan een array van pakketten die een bijgewerkt bestand hebben.

merk op dat de configuratie voor de opdracht publish ook van invloed is op de opdracht updated. Bijvoorbeeld:config.publish.ignore

— json

$ lerna updated --json

wanneer uitgevoerd met deze vlag, zal updated een array van objecten retourneren in het volgende formaat:

clean

$ lerna clean

verwijder de node_modules map uit alle pakketten.

lerna clean respecteert de vlaggen --ignore, --scope en --yes (zie vlaggen).

verschil

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

Verschil alle pakketten of één pakket sinds de laatste release.

vergelijkbaar met lerna updated. Dit commando draait git diff.

ls

$ lerna ls

Toon alle openbare pakketten in de huidige Lerna repo.

lerna ls respecteert de vlaggen --ignore en --scope (zie vlaggen).

–json

$ lerna ls --json

wanneer uitgevoerd met deze vlag, zal ls een array van objecten retourneren in het volgende formaat:

run

voer een NPM-script uit in elk pakket dat dat script bevat. Een dubbel streepje (--) is nodig om gestippelde argumenten door te geven aan de uitvoering van het script.

lerna run respecteert de --concurrency, --scope, --ignore, --stream, en --parallel vlaggen (zie vlaggen).

$ lerna run --scope my-component test

Opmerking: Het wordt aangeraden om de reikwijdte van dit commando te beperken (en lerna exec, hieronder) wanneer de --parallel vlag wordt gebruikt, omdat het opstarten van tientallen subprocessen schadelijk kan zijn voor de gelijkmoedigheid van je shell (of de maximale bestandsdescriptor limiet, bijvoorbeeld). YMMV

exec

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

voer een willekeurig commando uit in elk pakket. Een dubbel streepje (--) is nodig om gestreepte vlaggen door te geven aan het commando gestart, maar is niet nodig als alle argumenten positioneel zijn.

lerna exec respecteert de --concurrency, --scope, --ignore, en --parallel vlaggen (zie vlaggen).

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

om langlopende processen te starten, geef de vlag --parallel door:

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

u kunt ook de naam van het huidige pakket krijgen via de omgevingsvariabele LERNA_PACKAGE_NAME:

$ lerna exec -- npm view $LERNA_PACKAGE_NAME

u kunt ook een script draaien in de root-map, in een ingewikkelde dir-structuur via de omgevingsvariabele LERNA_ROOT_PATH:

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

Hint: de commando ‘ s worden parallel gestart met behulp van de gegeven concurrency (behalve met --parallel). De output wordt doorgesluisd, dus niet deterministisch. Als je het commando in het ene pakket na het andere wilt uitvoeren, gebruik het dan als volgt:

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

–bail

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

deze vlag geeft aan of het exec commando de uitvoering moet stoppen bij het tegenkomen van een fout die is veroorzaakt door een van de gestart subprocessen. De standaardwaarde is true.

importeer

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

importeer het pakket op <path-to-external-repository>, met commit historie, In packages/<directory-name>. Originele commit auteurs, data en berichten worden bewaard. Commits worden toegepast op de huidige branch.

dit is handig voor het verzamelen van bestaande standalone pakketten in een Lerna repo. Elke commit wordt aangepast om wijzigingen aan te brengen ten opzichte van de pakketdirectory. Dus, bijvoorbeeld, de commit die package.json heeft toegevoegd zal in plaats daarvan packages/<directory-name>/package.jsontoevoegen.

Misc

Lerna zal loggen in een lerna-debug.log bestand (hetzelfde als npm-debug.log) wanneer er een fout optreedt bij het uitvoeren van een opdracht.

Lerna heeft ook ondersteuning voor scoped pakketten.

lerna zonder argumenten zal alle commando ‘ s/opties tonen.

lerna.json

{ "lerna": "2.0.0", "version": "1.1.3", "commands": { "publish": { "ignore": }, "bootstrap": { "ignore": "component-*" } }, "packages": }
  • lerna: de huidige versie van Lerna wordt gebruikt.
  • version: de huidige versie van de repository.
  • commands.publish.ignore: een array van globs die niet in lerna updated/publishworden opgenomen. Gebruik dit om te voorkomen dat een nieuwe versie onnodig wordt gepubliceerd voor wijzigingen, zoals het repareren van een README.md typefout.
  • commands.bootstrap.ignore: een array van globs die niet opgestart zullen worden bij het uitvoeren van het lerna bootstrap Commando.
  • commands.bootstrap.scope: een array van globs die beperkt welke pakketten zullen worden opgestart wanneer het lerna bootstrap commando wordt uitgevoerd.
  • packages: Array van globs te gebruiken als pakket locaties.

gemeenschappelijke afhankelijkheden

de meeste devDependencies kunnen tot de wortel van een Lerna repo worden getrokken.

dit heeft enkele voordelen:

  • alle pakketten gebruiken dezelfde versie van een bepaalde afhankelijkheid
  • kan afhankelijkheden bij de root up-to-date houden met een geautomatiseerd programma zoals GreenKeeper
  • de installatietijd van afhankelijkheid is verminderd
  • minder opslagruimte is nodig

merk op dat devDependencies het leveren van “binaire” uitvoerbare bestanden die worden gebruikt door NPM-scripts nog steeds direct moeten worden geïnstalleerd in elk pakket waar ze worden gebruikt.

bijvoorbeeld de nsp afhankelijkheid is in dit geval nodig voor lerna run nsp (en npm run nsp binnen de map van het pakket) om correct te werken:

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

vlaggen

opties voor Lerna kunnen afkomstig zijn van configuratie (lerna.json) of op de opdrachtregel. Bovendien opties in config kan leven op het hoogste niveau of kan worden toegepast op specifieke commando ‘ s.

voorbeeld:

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

in dit geval zal exampleOption “foo” zijn voor alle commando ‘ s behalve init, waar het “bar”zal zijn. In alle gevallen kan het worden overschreven naar “baz” op de opdrachtregel met --example-option=baz.

–concurrency

hoeveel threads moeten worden gebruikt wanneer Lerna de taken parallelliseert (standaard wordt 4)

$ lerna publish --concurrency 1

–scope

Scopes een opdracht naar een subset van pakketten.

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

–sinds

bij het uitvoeren van een script of opdracht moet de bewerking worden uitgevoerd naar pakketten die zijn bijgewerkt sinds de opgegeven ref. Als ref niet is opgegeven, wordt standaard de laatste tag gebruikt.

Toon de inhoud van pakketten die sinds de laatste tag zijn gewijzigd:

$ lerna exec --since -- ls -la

voer de tests uit voor alle pakketten die zijn veranderd sinds master:

$ lerna run test --since master

Toon alle pakketten die sindssome-branch:

$ lerna ls --since some-branch

dit kan vooral handig zijn als het gebruikt wordt in CI, als je de doel branch kunt verkrijgen waar een PR in zal gaan, omdat je die kunt gebruiken als de ref naar de --since optie. Dit werkt goed voor PR ‘ s die zowel in master Als feature branches gaan.

— ignore

sluit een subset van pakketten uit bij het uitvoeren van een opdracht.

$ lerna bootstrap --ignore component-*

de ignore vlag, indien gebruikt met het bootstrap commando, kan ook worden ingesteld in lerna.json onder de commands.bootstrap sleutel. De opdrachtregelvlag neemt voorrang boven deze optie.

voorbeeld

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

Hint: de glob wordt vergeleken met de pakketnaam gedefinieerd in package.json, niet de mapnaam waarin het pakket leeft.

–include-filtered-dependencies

Opmerking: Dit overschrijft de vlaggen --scope en --ignore.

d.w.z. een pakket dat overeenkomt met de --ignore vlag zal nog steeds bootstrapped worden als het afhankelijk is van een ander pakket dat wordt bootstrapped.

dit is handig voor situaties waarin je een enkel pakket wilt” instellen ” dat afhankelijk is van andere pakketten die worden opgezet.

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

–loglevel

welk niveau logs moet worden gerapporteerd. Als er een fout optreedt, worden alle logs naar lerna-debug geschreven.meld u aan in de huidige werkmap.

logs van een hoger niveau dan de instelling worden getoond. De standaard is “info”.

— max-buffer

Stel een maximale bufferlengte in voor elke onderliggende procesaanroep. Handig als iemand bijvoorbeeld een repo met een groter aantal commits wil importeren terwijl lerna importwordt uitgevoerd. In dat geval kan de ingebouwde bufferlengte niet voldoende zijn.

— no-sort

standaard worden alle taken uitgevoerd op pakketten in topologisch gesorteerde volgorde om de afhankelijkheidsrelaties van de pakketten in kwestie te respecteren. Cycli worden gebroken op een best-effort basis op een manier die niet gegarandeerd consistent zijn over Lerna aanroepingen.

topologische sortering kan concurrentieknelpunten veroorzaken als er een klein aantal pakketten zijn met veel afhankelijke personen of als het uitvoeren van sommige pakketten onevenredig lang duurt. De --no-sort optie schakelt sorteren uit, in plaats daarvan taken uitvoeren in een willekeurige volgorde met maximale concurrency.

deze optie kan ook helpen als u meerdere” watch ” – opdrachten uitvoert. Omdat lerna run commando ‘ s in topologisch gesorteerde volgorde uitvoert, kan het uiteindelijk wachten op een commando voordat het verder gaat. Dit zal de uitvoering blokkeren wanneer je “watch” commando ‘ s uitvoert, omdat ze meestal nooit eindigen. Een voorbeeld van een” watch ” Commando draait babel met de --watch CLI vlag.

–hoist

installeer externe afhankelijkheden die overeenkomen met glob bij de repo root zodat ze beschikbaar zijn voor alle pakketten. Alle binaries van deze afhankelijkheden zullen worden gekoppeld aan afhankelijke package node_modules/.bin/ mappen, zodat ze beschikbaar zijn voor NPM scripts. Als de optie aanwezig is, maar geen glob wordt gegeven, is de standaard ** (hijsen alles). Deze optie heeft alleen invloed op het bootstrap Commando.

$ lerna bootstrap --hoist

voor achtergrondinformatie over --hoist, zie de hoist-documentatie.

Opmerking: Als pakketten afhankelijk zijn van verschillende versies van een externe afhankelijkheid, zal de meest gebruikte versie worden opgetild en zal een waarschuwing worden uitgezonden.

— nohoist

Installeer geen externe afhankelijkheden die overeenkomen met glob bij de repo-root. Dit kan worden gebruikt om af te zien van het hijsen voor bepaalde afhankelijkheden.

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

–NPM-client

installeer externe afhankelijkheden met install. Moet een uitvoerbaar bestand zijn dat weet hoe NPM afhankelijkheden te installeren.

$ lerna bootstrap --npm-client=yarn

kan ook worden geconfigureerd in lerna.json:

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

–use-workspaces

maakt integratie met Garenwerkbladen mogelijk (beschikbaar sinds [email protected]+).
de waarden in de array zijn de commando ‘ s waarin Lerna operatie aan Yarn delegeert (momenteel alleen bootstrapping).
als --use-workspaces waar is dan zal packages worden overschreven door de waarde van package.json/workspaces.
kan ook worden geconfigureerd in lerna.json:

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

–stream

Stream de uitvoer van dochterprocessen onmiddellijk, voorafgegaan door de naam van het oorspronkelijke pakket. Dit maakt het mogelijk om uitvoer van verschillende pakketten te interleaved.

$ lerna run watch --stream

–parallel

vergelijkbaar met --stream, maar negeert concurrency en topologische sortering volledig, het uitvoeren van een gegeven commando of script onmiddellijk in alle overeenkomende pakketten met prefixed streaming uitvoer. Dit is de voorkeursvlag voor langlopende processen zoals babel src -d lib -w die over veel pakketten worden uitgevoerd.

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

–registry

wanneer deze vlag wordt uitgevoerd, zullen doorgestuurde NPM-opdrachten het opgegeven register voor uw pakket(en) gebruiken.

dit is handig als u niet expliciet uw registerconfiguratie in al uw pakketten wilt instellen.json bestanden afzonderlijk bij bijvoorbeeld het gebruik van particuliere registers.

— temp-tag

wanneer deze vlag wordt aangenomen, zal het standaard publicatieproces worden gewijzigd door eerst alle gewijzigde pakketten te publiceren in een tijdelijke dist-tag (lerna-temp) en vervolgens de nieuwe versie(s) te verplaatsen naar de standaard dist-tag (latest).

dit is over het algemeen niet nodig, aangezien Lerna pakketten standaard in topologische volgorde zal publiceren (alle afhankelijkheden vóór afhankelijke personen).

Wizard

als u de voorkeur geeft aan een leidraad voor cli (in het geval u lerna gaat gebruiken of het aan een nieuw team wilt introduceren), dan vindt u lerna-wizard misschien leuk. Het zal u leiden door een reeks van goed gedefinieerde stappen:

huidige Tags

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.