Deel dit artikel:

Blog
Aug 22, 20235 min read

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.

ABONNEER U OP ONZE NIEUWSBRIEF

Deel dit artikel:

ABONNEER U OP ONZE NIEUWSBRIEF

Verwante Blog Artikelen

    Bouwen aan een goed presterend Agile team: Onze bewezen aanpak

    Blog

    Bouwen aan een goed presterend Agile team: Onze bewezen aanpak

    Ontdek hoe we goed presterende Agile-teams bouwen door duidelijke rollen te definiëren, samenwerking te stimuleren en flexibele tools te gebruiken.

    Geschreven door Svetoslava Angelova
    Aug 27, 20249 min read
    Drupal 11: Wat kunt u verwachten? Uitgebreide gids voor nieuwe functies en verbeteringen

    Blog

    Drupal 11: Wat kunt u verwachten? Uitgebreide gids voor nieuwe functies en verbeteringen

    Drupal 11 is uit! Ontdek in dit artikel de spannende functies en verbeteringen. Upgrade nu en herdefinieer je digitale strategie met de deskundige ondersteuning van Bulcode.

    Geschreven door Svetoslava Angelova
    Aug 05, 20247 min read
    Single Directory-onderdelen in Drupal core: Een uitgebreid overzicht

    Blog

    Single Directory-onderdelen in Drupal core: Een uitgebreid overzicht

    Ontdek hoe Single Directory Components (SDC) in Drupal Core het ontwikkelproces stroomlijnen door componentgerelateerde bestanden in een enkele map in te kapselen. Leer meer over de voordelen van SDC's en volg een stap-voor-stap handleiding om ze te implementeren in uw Drupal-projecten.

    Geschreven door Nikolay Tsekov
    Aug 07, 20244 min read
    Welk IT-engagementmodel is geschikt voor jou?

    Blog

    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 Angelova
    Aug 22, 202310 min read
    De websites van de luchthavens van Varna en Burgas gebruiken React-componenten in Drupal

    Blog

    De websites van de luchthavens van Varna en Burgas gebruiken React-componenten in Drupal

    Drupal is een modulair systeem waarvan de functies kunnen worden aangepast aan veel verschillende vereisten, wat vooral belangrijk is voor projecten in de overheidsadministratie.

    Geschreven door Mihail Shahov
    Aug 22, 20234 min read
    Laravel Mix - een eenvoudige en krachtige wrapper rond Webpack

    Blog

    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 Tashkova
    Aug 22, 20234 min read
    Wat is Scrum?

    Blog

    Wat is Scrum?

    Scrum is een onderdeel van de Agile methodologie. Het is het populairste raamwerk voor agile ontwikkeling en het is een eenvoudig procesraamwerk.

    Geschreven door Svetoslava Angelova
    Aug 22, 20234 min read
    Rollen in Scrum

    Blog

    Rollen in Scrum

    Scrum rollen en hoe je ze in je organisatie kunt inpassen.

    Geschreven door Svetoslava Angelova
    Aug 22, 20234 min read
    Scrum evenementen

    Blog

    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 Angelova
    Aug 22, 20233 min read
    Scrum artefacten

    Blog

    Scrum artefacten

    Bij softwareontwikkeling verwijst de term "artefact" naar informatie die belanghebbenden en het scrumteam gebruiken om een product te beschrijven dat wordt ontwikkeld.

    Geschreven door Svetoslava Angelova
    Aug 22, 20232 min read
    Drupal zonder kop met Next.js - eenvoudig voorbeeld

    Blog

    Drupal zonder kop met Next.js - eenvoudig voorbeeld

    De laatste tijd is de trend in webontwikkeling in het algemeen, en dus ook in Drupal-ontwikkeling, om de technologie headless te gebruiken. De laatste tijd is de trend in webontwikkeling in het algemeen, en dus ook in Drupal-ontwikkeling, om de technologie headless te gebruiken.

    Geschreven door Mihail Shahov
    Aug 22, 20237 min read
    Speciale softwareontwikkelaars (teams) inhuren

    Blog

    Speciale softwareontwikkelaars (teams) inhuren

    Bent u het zat om de kosten te verhogen met uw interne ontwikkelteam? Waarom krijgt u geen toegewijd team tegen 40% tot 60% van de kosten?

    Geschreven door Mihail Shahov
    Aug 22, 20233 min read

    NEEM CONTACT OP

    Heb je een project dat je wilt lanceren?