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

    Waarom startups aarzelen om te werken met een softwareontwikkelingsbureau op maat - en hoe we elke zorg aanpakken

    Blog

    Waarom startups aarzelen om te werken met een softwareontwikkelingsbureau op maat - en hoe we elke zorg aanpakken

    <p>Startups aarzelen vaak om met softwarebureaus te werken omdat ze zich zorgen maken over kosten, controle en flexibiliteit. Ontdek hoe de softwareoplossingen op maat van Bulcode elke uitdaging aangaan en groei en flexibiliteit garanderen.</p>

    Geschreven door Svetoslava Angelova
    Nov 05, 20246 min read
    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
    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
    Het belang van de juiste ontwikkelingspartner in de levenscyclus van uw softwareontwikkeling

    Blog

    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 Shahov
    Sep 26, 20239 min read
    Config split module tutorial voor Drupal

    Blog

    Config split module tutorial voor Drupal

    Heel vaak moeten wij als ontwikkelaars met verschillende omgevingen werken. Dit kan soms leiden tot (on)verwachte problemen. In Drupal 8 gebruiken we het configuratiesysteem dat aardig goed werkt, maar er zijn gevallen waarin de instellingen voor de lokale en een andere omgeving anders zouden moeten zijn.

    Geschreven door Ivaylo Tsandev
    Aug 22, 20237 min read
    Onthulling van het krachtduo: Next.js als Headless frontend van Drupal 10

    Blog

    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 Kolev
    Feb 09, 20245 min read
    Config ignore module tutorial voor Drupal

    Blog

    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 Tsandev
    Aug 22, 20237 min read

    NEEM CONTACT OP

    Heb je een project dat je wilt lanceren?