2023-08-22

NVM vs NPM vs Yarn

Ventsislav Venkov

Junior Ontwikkelaar

NVM vs NPM vs Yarn

Vergeleken met de drie technologieën verschilt NVM van de andere twee. Node Version Manager (NVM) wordt gebruikt om Node.js-versies te beheren. NPM en Yarn zijn Node.js pakketbeheerders. Ze maken het mogelijk om pakketten te downloaden, te installeren en te beheren bij het ontwikkelen in JavaScript.

Wat is NVM?

Zoals je al weet, is NVM de Node Versie Manager. Hiermee kun je snel en gemakkelijk schakelen tussen verschillende node-versies voor het testen en ontwikkelen van een app.

Waarom NVM gebruiken?

NVM stelt gebruikers in staat om:
  • Met één commando kun je lokaal elke remote Long Term Support (LTS) versie van Node.js downloaden.
  • Vanaf de commandoregel kun je snel schakelen tussen verschillende Node.js-versies.
  • Maak aliassen aan om eenvoudig te wisselen tussen verschillende downloadbare versies van Node.js.

NVM gebruiken

Als NVM is geïnstalleerd, kun je elke versie van Node.js beheren met een eenvoudig commando.

Dit geeft een lijst van alle geïnstalleerde lokale versies van Node:

nvm ls

Om een specifieke versie te installeren, kan dit commando worden gebruikt:

nvm installeer <SPECIFIC_NODE_VERSION>

Om een specifieke versie van Node.js te gebruiken (of te wisselen), gebruik je het volgende commando:

nvm gebruik <SPECIFIC_NODE_VERSION>

NPM vs Garen

Node pakketbeheer (NPM)

NPM is de standaard pakketbeheerder voor Node. Eenvoudige commando's worden ondersteund omdat het een CLI (Command Line Interface) installer is. Het heeft pakketten geschreven in JSON en is open-source en gratis. In een package.json-bestand kunnen de afhankelijkheden van je Node-applicatie worden opgesomd en opgeslagen. Gebruikers kunnen ook pakketten distribueren. Het primaire npm-register heeft meer dan 1,3 miljoen pakketten. Automatisering van het beheer van afhankelijkheden en pakketten is het primaire doel van NPM. Met behulp van een "package.json" bestand kan npm alle afhankelijkheden van een project met één commando installeren wanneer het gebruikt wordt als afhankelijkhedenbeheerder voor een lokaal project.

Garen (Nog een brononderhandelaar)

De meest recente en verbeterde versie van NPM is yarn. Als vervanging voor NPM hebben Facebook, Exponent, Google en Tilde het in 2016 gemaakt. Het is ontworpen om complexe functionaliteit te bieden die NPM miste. Om het gebruik ervan te stabiliseren, heeft NPM een paar cruciale functionaliteiten toegevoegd. Yarn gebruikt dezelfde technieken als NPM, maar het houdt alle installatiegegevens intern bij om compatibiliteit tussen platforms te garanderen. Het is ook veiliger en stabieler dan NPM.

De verschillen

Yarn slaat alle geïnstalleerde pakketten op in de cache. Yarn installeert de pakketten tegelijkertijd en daarom is Yarn sneller dan NPM.

Ze downloaden allebei pakketten van de npm repository. Yarn genereert standaard yarn.lock om de versies van de afhankelijkheden van het pakket te vergrendelen.

Yarn voert op de achtergrond een veiligheidscontrole uit wanneer het pakketten downloadt. Om te voorkomen dat kwaadaardige scripts worden gedownload en afhankelijkheidsproblemen veroorzaken, maakt het gebruik van de licentie-informatie van het pakket. Beveiliging was een grote zorg voor NPM in de eerste versies. Sinds versie 6 voert NPM elke keer dat een pakket wordt geïnstalleerd een beveiligingsaudit uit. Dit zorgt ervoor dat er geen conflicterende afhankelijkheden zijn en helpt kwetsbaarheden te voorkomen.

Er zijn veel fundamentele overeenkomsten tussen Yarn en NPM:

  • Automatisch gegenereerde slotbestanden
  • Ondersteuning voor het gebruik van Workspaces
  • Ondersteuning voor het gebruik van scripts op afstand - npx vs yarn dlx
Recente wijzigingen in NPM en Yarn

Zowel Yarn als NPM worden voortdurend bijgewerkt met bugfixes en nieuwe functies zoals NPX en PnP.

NPX

Node Package Executor, afgekort NPX. Het is een functie die is geïntroduceerd in NPM 5.2.0 en later. NPX vergemakkelijkt het uitvoeren van eenmalige instructies. Dankzij NPX kunnen pakketten die in het NPM-register staan uitgevoerd worden zonder dat ze als afhankelijkheden aan je project worden toegevoegd.

Lees deze handleiding om bekend te raken met NPX.

Garen2 (Bes)

Met de release van Yarn2, ook bekend als Berry, heeft Yarn hun yarn-lijn uitgebreid. Plug'n'Play, Constraints, Offline Installation, Zero-Installation, Workspaces en Yarn Dlx zijn slechts enkele van de geweldige nieuwe functies in deze editie van Yarn (het nieuwe Yarn NPX).

Als je de stappen in deze sectie correct hebt uitgevoerd, zie je een nieuw blok in phpinfo().

Hier zijn de meest opvallende verbeteringen:

Plug'n'Play is een alternatieve installatiemethode. In tegenstelling tot Node.js, dat een node modules directory aanmaakt en de resolutie zelf afhandelt, genereert Plug'n'Play slechts één pnp.js bestand.

  • Knooppuntmodules elimineren.
  • De installatietijd van pakketten is met maar liefst 70% verkort.
  • Als je verzuimt om een afhankelijkheid op te geven, zal Plug'n'Play je een waarschuwing geven.
  • Sneller opstarten van lopende projecten.

Als je meer wilt weten over Plug'n'Play, lees dan deze handleiding.

Projectafhankelijkheden kunnen worden beheerd met behulp van constraints, waarmee je algemene regels kunt aangeven in prologue (een declaratieve programmeertaal). Zolang er geen incompatibele afhankelijkheden in je archief zijn, kun je regels opstellen om deze af te dwingen.

Gemoderniseerde Workspaces - je kunt nu een mono repository instellen om de onderlinge afhankelijkheden tussen verschillende projecten te controleren. Hierdoor is het mogelijk dat veel projecten naar elkaar verwijzen. Wijzigingen in een repository werken automatisch de andere repositories bij.

De twee garens, Garen1 en Garen2, zijn heel verschillend. Leer hoe je de overgang maakt van Garen1 naar Garen2 met behulp van deze handige handleiding.

Conclusie

Er zijn grote verschillen tussen NVM, NPM en Yarn.

  • Node.JS kan worden ingesteld met NVM.
  • NPM is de beste manier om alle pakketten die je nodig hebt te installeren.
  • Yarn werkt net als NPM, maar het is sneller en stabieler bij het installeren en noteren.
  • afhankelijkheden voor je Node.JS applicatie.

Wat ze gemeen hebben, is dat ze allemaal worden gebruikt door Node-toepassingen.

Bij Bulcode zijn we gewend om zowel met NPM als met Yarn te werken, maar de voorkeur gaat meestal uit naar Yarn.

Tags:

Deel dit artikel:

Bedankt voor je inschrijving!

Abonneer u op onze nieuwsbrief

    Drupal 9 afbeelding converteren naar WebP formaat

    Drupal 9 afbeelding converteren naar WebP formaat

    WebP is in staat om datacompressie naar een nieuw niveau te tillen dankzij de toevoeging van een voorspellingsmodus aan het JPG-proces, waardoor het duidelijk te zien is hoe het zijn JPG-gebaseerde tegenhanger kan overtreffen. En we hebben de resultaten om het te bewijzen.
    Geschreven door Vasil Boychev2024-03-14
    Wat is Agile en waarom gebruiken we het?

    Wat is Agile en waarom gebruiken we het?

    Agile is een tijdgebonden, iteratieve methode om software op te leveren die erop gericht is om software geleidelijk op te leveren tijdens het project in plaats van alles in één keer aan het einde.
    Geschreven door Svetoslava Angelova2024-03-14
    Laravel Mix - een eenvoudige en krachtige wrapper rond Webpack

    Laravel Mix - een eenvoudige en krachtige wrapper rond Webpack

    Laravel Mix biedt een vloeiende API voor het definiëren van webpack bouwstappen voor je Laravel applicatie met behulp van verschillende veelgebruikte CSS en JavaScript pre-processors.
    Geschreven door Stefani Tashkova2024-03-14
    Het belang van de juiste ontwikkelingspartner in de levenscyclus van uw softwareontwikkeling

    Het belang van de juiste ontwikkelingspartner in de levenscyclus van uw softwareontwikkeling

    Succes ontsluiten: De kunst van het kiezen van de perfecte softwareontwikkelingspartner. Ontdek de cruciale rol van partners in softwareontwikkeling, onthul ROI-geheimen en blijf de trends in de sector voor in dit must-read artikel.
    Geschreven door Mihail Shahov2024-03-14
    Drupal-versies begrijpen en een migratiestrategie plannen

    Drupal-versies begrijpen en een migratiestrategie plannen

    Herken de verschillende Drupal-versies en houd je website up-to-date.
    Geschreven door Svetoslava Angelova2024-03-14
    Config ignore module tutorial voor Drupal

    Config ignore module tutorial voor Drupal

    Soms willen we niet dat onze configuraties worden gedeeld in de codebase. Wat kunnen we in zulke gevallen doen?
    Geschreven door Ivaylo Tsandev2024-03-13
    Onthulling van het krachtduo: Next.js als Headless frontend van Drupal 10

    Onthulling van het krachtduo: Next.js als Headless frontend van Drupal 10

    Ontdek de dynamische synergie tussen Drupal 10 en Next.js, want deze krachtige combinatie verandert het landschap van webontwikkeling. Next.js, een open-source op React gebaseerd framework, is naadloos geïntegreerd als headless frontend van Drupal 10 en biedt een overvloed aan voordelen. Van verbeterde prestaties met functies als automatische codesplitsing en server-side rendering tot flexibel ontwerp en SEO-vriendelijke mogelijkheden, deze samenwerking stelt ontwikkelaars in staat om goed presterende, schaalbare en visueel aantrekkelijke webapplicaties te maken. Het efficiënte contentbeheer van Drupal 10 in combinatie met het aanpassingsvermogen van Next.js aan trends zorgt voor een geavanceerde ontwikkelaanpak, waardoor deze tandem in de voorhoede van moderne webontwikkelpraktijken staat. Omarm de toekomst met de combinatie van Drupal 10 en Next.js en herdefinieer hoe we dynamische online ervaringen benaderen en creëren.
    Geschreven door Todor Kolev2024-03-13
    Rollen in Scrum

    Rollen in Scrum

    Scrum rollen en hoe je ze in je organisatie kunt inpassen.
    Geschreven door Svetoslava Angelova2024-03-13
    Scrum evenementen

    Scrum evenementen

    Scrum definieert verschillende gebeurtenissen (soms ceremonies genoemd) die binnen elke sprint plaatsvinden: sprintplanning, dagelijkse scrum, sprint review en sprint retrospective.
    Geschreven door Svetoslava Angelova2024-03-13
    Hoe we een SSL algemene beoordeling optimaliseerden van B naar A+

    Hoe we een SSL algemene beoordeling optimaliseerden van B naar A+

    Door de SSL-implementatie te optimaliseren, kunnen alle klanten de site veilig openen en bekijken zonder waarschuwingen.
    Geschreven door Mihail Shahov2024-03-13
    Overzicht React - Definitie, SPA, Componenten, Hooks

    Overzicht React - Definitie, SPA, Componenten, Hooks

    React is een gratis en open-source front-end JavaScript-framework voor het maken van gebruikersinterfaces op basis van UI-componenten. Het staat ook bekend als React.js of ReactJS.
    Geschreven door Mihail Shahov2024-03-13
    Welk IT-engagementmodel is geschikt voor jou?

    Welk IT-engagementmodel is geschikt voor jou?

    Vaste prijs, tijd en materialen of speciale teams? Overweeg zorgvuldig alle voor- en nadelen van het opdrachtmodel voor jouw project.
    Geschreven door Svetoslava Angelova2024-03-13

    Als je hulp nodig hebt bij het opleveren van een project met deze technologieën, aarzel dan niet om contact met ons op te nemen;

    Privacy-instellingen