Node.js is een open-source cross-platform Javascript runtime-omgeving. De afgelopen jaren is het een populaire keuze geworden voor back-end webontwikkeling vanwege de snelle Input/Output (I/O) prestaties en onverslaanbare JavaScript-syntaxis. Bovendien zorgt het adaptieve karakter voor snelle aanpassingen, waardoor deze servertechnologie zich onderscheidt van haar concurrenten.
Node.js Package Manager — Een overzicht
Node.js Package Manager of npm is de standaard package manager voor JavaScript. Npm wordt vaak gebruikt om projectscripts te installeren en externe modules te beheren in een Node.js project. Daarnaast houdt het de geïnstalleerde modules in een project bij met behulp van het package.json bestand, dat zich in de project’s directory bevindt. Npm slaat de volgende informatie op en registreert deze:
- Modules die vereist zijn voor een project en hun geïnstalleerde versies, indien van toepassing.
- Metadatabeschrijving van een project met onder andere details over de auteur en licentie.
- Uitvoerbare scripts om projectgerelateerde of doelgerichte taken te automatiseren.
In deze handleiding leiden we je door de stappen voor het gebruik van Node.js-modules met npm en package.json.
Laten we beginnen!
Vereisten
Om deze handleiding te volgen, heb je het volgende nodig:
- Node.js moet op je systeem geïnstalleerd zijn.
- Volg de stappen om Node.js te installeren op Ubuntu 18.04
-
De nieuwste versie van Ubuntu geïnstalleerd op je systeem.
Stap 1: Maak een package.json-bestand
Laten we onze handleiding beginnen met een voorbeeld van een dummyproject dat gebruikmaakt van de Node.js locator-module. Het project is bedoeld om het IP-adres van de gebruiker te verzamelen en de uitvoer te delen als het land van herkomst van de gebruiker. Omdat we ons richten op het begrijpen van het gebruik van Node.js modules met npm, is het niet nodig om de modules handmatig te schrijven. In plaats daarvan gebruiken we de vooraf geïnstalleerde en aanpasbare pakketten in ons project.
JSON of JavaScript Object Notation is een standaardformaat dat wordt gebruikt voor het delen en verzenden van gegevens. Eerst maken we een JSON-bestand dat software-afhankelijkheden opslaat en beheert. Het handmatig maken van een package.json is echter vermoeiend en tijdrovend. Voor de eenvoud gebruiken we het init-commando om het package.json-bestand te maken, in plaats van moeite te doen om extra codeblokken te schrijven om onze JSON vanaf nul op te bouwen.
-
init-commando
Laten we eerst een nieuwe map maken met het mkdir-commando en deze de naam locator:
|
1 |
mkdir locator |
Gebruik vervolgens het cd-commando om naar de nieuw gemaakte map te gaan:
|
1 |
cd locator |
Dan, voer npm in om de interactieve prompt te initialiseren:
|
1 |
npm init |
Daarna zie je de uitvoer:

1. name
Je wordt verwezen naar de name van je nieuwe project; de huidige map. Je ziet de standaardwaarden tussen haakjes (). Om deze handleiding eenvoudig en begrijpelijk te houden, kiezen we voor de standaardopties. Druk op ENTER om te accepteren en door te gaan.
2. version
De volgende waarde is de version-naam, wat een belangrijke vereiste is als je je project deelt in de npm-pakketrepository.
|
Note: Node.js-pakketten volgen de Semantic Versioning-richtlijn (semver). Eerste getal: De MAJOR-versie, en deze verandert alleen als de API verandert. Second Number: The MINOR-versie, die verandert wanneer er extra functies worden toegevoegd. Laatste getal: De PATCH-versie, die verandert wanneer een fout of bug is opgelost. |
3. description
De description is een informatieve string die het werkproces van de Node.js-module beschrijft. In onze demo zal het locator-project het IP-adres van de gebruiker ophalen en het land van herkomst retourneren.
|
Note: Meestal hebben modules een index.js-bestand als startpunt. Dit is ook de main-eigenschap van package.json, het startpunt voor npm-modules. Als package.json echter niet wordt gevonden, zal Node.js automatisch index.js laden. |
4. test commando
Het is een uitvoerbaar script of commando om je projecttests uit te voeren. Omdat testen buiten het bestek van onze handleiding valt, slaan we dit over en drukken we op ENTER.
5. init commando
Het init-commando vraagt naar de GitHub Repository van het project. Laten we ook dit deel overslaan en doorgaan.
6. keywords
Trefwoorden zijn een array van strings die worden gebruikt om naar een repository te zoeken. Het wordt aanbevolen om de trefwoorden nauwkeurig en relevant voor uw project te houden, zodat ze naadloos traceerbaar zijn.
Lijst deze trefwoorden als strings en scheid ze met komma's. Typ in ons project ip, country, latitude, en longitude bij de prompt en u zult zien dat ze zijn opgenomen als trefwoorden in package.json.
7. author
Behandel het author veld als feedback en een manier om met uw gebruikers te communiceren. Als gebruikers bijvoorbeeld een fout in uw module ontdekken, kunnen ze dit veld gebruiken om u op de hoogte te stellen en de fout te laten herstellen.
-
Formaat: "Naam \<E-mail\> (Website)".
-
Demo: "Paul\<paul@your_domain\> (https://your_domain)"
-
Het toevoegen van e-mail- en websitedata is optioneel. U kunt echter een geldige auteur opgeven en uw contactgegevens toevoegen als een author. Bevestig de details en druk op ENTER.
8. license
Het license veld illustreert de juridische voorwaarden die gebruikers moeten kennen bij het gebruiken van uw module. Aangezien Node.js modules open source zijn, npm configureert dit naar ISC-license automatisch.
Navigeer naar de open source licentiepagina en kies de Open Source Initiative die het beste bij uw behoeften past. Typ UNLICENSED bij de prompt als u geen licentie nodig heeft voor uw repository. In onze handleiding gebruiken we de standaard ISC-licentie. Druk op ENTER om dit proces te voltooien.
Het init commando zal het package.json bestand aanmaken en het resultaat weergeven:

Druk vervolgens op ENTER om door te gaan en het package.json bestand aan te maken. Ons JSON bestand zal een overzicht bijhouden van alle modules en pakketten die we in ons project zullen installeren.
In de volgende stap installeren we afhankelijkheden en Node.js-modules.
Stap 2: Installeer afhankelijkheden en modules
Het maken van aangepaste externe bibliotheken is tijdrovend en vereist veel inspanning. Het installeren van vooraf gedefinieerde afhankelijkheden en externe bibliotheken is daarentegen de meest effectieve manier. In onze handleiding gebruiken we de HTTP bibliotheek om onze demo-locator-module in staat te stellen een externe API-aanvraag te doen om geografische gegevens te verzamelen.
In deze handleiding gebruiken we de axios bibliotheek om HTTP-verzoeken te doen. Laten we eerst axios installeren:
|
1 |
npm install axios --save |
Begin met het installeren van het npm pakket, gevolgd door ze op te sommen met spaties ertussen. Voeg ook de --save tag toe om ervoor te zorgen dat het project wordt opgeslagen als een projectafhankelijkheid.
U ziet de uitvoer:

Open de package.json met behulp van nano of een teksteditor naar keuze:
|
1 |
nano package.json |
Let op de nieuw toegeegde eigenschap die onderaan het codeblok is gemarkeerd:

-
Ontwikkelingsafhankelijkheden downloaden
Ontwikkelingsafhankelijkheden zijn pakketten die worden gebruikt bij de projectontwikkeling en hebben geen nut bij de productie of het onderhoud van het project. Hoewel deze afhankelijkheden in productieomgevingen misschien ineffectief klinken, spelen ze een belangrijke rol bij het schrijven en herschrijven van code.
Net als code-linters spelen ontwikkelingsafhankelijkheden een cruciale rol in softwareontwikkeling. Meestal gebruiken ontwikkelaars code linters om uniformiteit en consistentie in styling te behouden tijdens de projectontwikkeling, wat anders nutteloos is in productie.
Laten we een linter installeren als een ontwikkelingsafhankelijkheid voor uw project. Gebruik ook de --save-dev vlag om eslint op te slaan als een afhankelijkheid die vereist is voor ontwikkeling:
|
1 |
npm i eslint@6.0.0 --save-dev |
We hebben @6.0.0 toegevoegd aan onze afhankelijkheid, zodat wanneer we modules bijwerken, ze worden voorzien van een versie. Het symbool @ zal npm informeren om te zoeken naar een specifieke tag die u wilt installeren. Open nu het package.json bestand opnieuw:
|
1 |
nano package.json |
U ziet de uitvoer:

- Zelfgegenereerde bestanden: node_modules en package-lock.json
In het begin, tijdens het installeren van een pakket in het Node.js-project, worden de package.json en package-lock.json bestanden automatisch aangemaakt. Bevestig deze bestanden in de werkmap:
![]()
Aangezien de meeste geïnstalleerde afhankelijkheden zijn opgeslagen in de node_modules map, het is raadzaam om deze map niet te committen naar uw versiebeheersysteem. Met een toename van het aantal geïnstalleerde afhankelijkheden, neemt de grootte van de node_modules ook toe.
Omgekeerd houdt het package-lock.json-bestand een overzicht bij van de exacte geïnstalleerde versies, dus het is niet nodig om node_modules expliciet op te nemen. In tegenstelling tot de node_modules map, kunt u dit bestand wel committen naar uw versiebeheersysteem omdat het een gedetailleerde weergave geeft van al uw afhankelijkheden inclusief hun versies.
- Installeren met behulp van package.json
De package.json en package-lock.json-bestanden stellen u in staat om dezelfde projectafhankelijkheden in te stellen voordat u met de projectontwikkeling begint. Navigeer naar uw mappenstructuur en maak een nieuwe map aan op hetzelfde mapniveau als de locator. Noem de nieuwe map cloned_locator:
|
1 2 |
cd .. mkdir cloned_locator |
Ga vervolgens naar de cloned_locator:
|
1 |
cd cloned_locator |
Importeer package.json en package-lock.json-bestanden van locator naar cloned_locator:
|
1 |
cp ../locator/package.json ../locator/package-lock.json . |
De . staat voor de huidige map. Installeer de vereiste modules met de volgende opdracht:
|
1 |
npm i |
In eerste instantie zal npm het package-lock.json-bestand controleren om de modules te installeren. Als het lock-bestand niet beschikbaar is, leest het het package.json bestand om de installaties te bepalen.
Over het algemeen is installeren vanaf package-lock.json eenvoudig omdat het lock-bestand de exacte versie van modules en hun afhankelijkheden bevat. Dat betekent dat wanneer u installeert met behulp van het package.json, npm extra tijd zal besparen die nodig is om een compatibele en stabiele versie te vinden.
Negeer de ontwikkelingsafhankelijkheden door de tag --production toe te voegen:
|
1 |
npm i --production |
Ga daarna terug naar de locator:
|
1 |
cd ../locator |
- Globale installaties
Tot nu toe hebben we npm modules lokaal geïnstalleerd. U hebt echter ook het alternatief om pakketten globaal te installeren en ze te gebruiken via een shell-opdracht of CLI. U kunt bijvoorbeeld door het huidige locator-project navigeren met behulp van de Hexo bibliotheek en uw statische website beheren. Gebruik de volgende opdracht met de -g tag om de Hexo CLI globaal te installeren:
|
1 |
npm i hexo-cli -g |
|
Opmerking: Als u een foutmelding krijgt bij het globaal installeren van pakketten, probeer dan deze opdracht sudo npm i hexo-cli -g met root-inloggegevens. |
Gebruik de volgende opdracht om te controleren of het pakket succesvol is geïnstalleerd:
|
1 |
hexo --version |
U ziet de uitvoer:

Stap 3: Modules beheren en bijwerken
Een pakketbeheerder doet meer dan alleen het installeren van de Node.js-modules. Er zijn tal van aanpassingsopties waarmee u naar eigen wens modules kunt weergeven, bijwerken, verwijderen of zelfs een beveiligingslaag kunt toevoegen.
In dit gedeelte leren we hoe u:
-
Modules kunt weergeven
-
Modules kunt bijwerken
-
Modules kunt verwijderen
-
Modules kunt controleren (auditen)
Laten we ze allemaal in detail bespreken:
-
Modules weergeven
Het weergeven van modules geeft u, zoals de naam al doet vermoeden, de details van alle in het project geïnstalleerde modules. In plaats van het package.json-bestand te lezen, kunt u de opdracht ls of list gebruiken om uw projectmodules in detail te bekijken:
|
1 |
npm ls |
U ziet de uitvoer:

Standaard geeft de opdracht ls de hele afhankelijkheidsboom weer, inclusief de projectafhankelijkheden en de module waarvan deze afhankelijk is. U kunt echter ook een vogelvluchtperspectief krijgen en expliciet een specifieke module targeten. Gebruik de volgende opdracht om de modules te controleren die u hebt geïnstalleerd zonder hun afhankelijkheden:
|
1 |
npm ls --depth 0 |
U ziet de uitvoer:

-
Modules bijwerken
Het is altijd raadzaam om uw npm-module up-to-date te houden, zodat u geen last krijgt van softwarecrashes of -conflicten. Gebruik de volgende opdracht om te controleren of een update nodig is:
|
1 |
npm outdated |
U ziet de uitvoer:

Laten we elke term in detail begrijpen:
- Pakket: Dit toont het huidige Pakket dat in uw project is geïnstalleerd.
- Huidig: Dit toont de Huidige versie van het pakket.
- Gewenst:Toont de npm versie die het beste past bij de versievereiste in package.json.
- Latest: Het toont de nieuwste npm uitgebracht die u indien nodig moet bijwerken.
- Location: Het pakket Location in de dependency tree.
Zoals gesuggereerd, kunnen we onze npm naar een stabiele versie bijwerken. Gebruik het volgende commando om uw huidige pakket bij te werken:
|
1 |
npm up eslint |
U ziet de uitvoer:

In plaats van ze één voor één bij te werken, kunt u ook alle modules tegelijk bijwerken met het up commando:
|
1 |
npm up |
-
Modules deïnstalleren
Vaak geeft een dependency niet de verwachte uitvoer en moet u een aangepaste dependency maken. In dergelijke scenario's hebt u de optie om dependencies te deïnstalleren uit uw package.json en package-lock.json bestanden. Stel dat u axios als dependency hebt en deze geen bevredigend resultaat oplevert. U zult deze repository ongetwijfeld uit uw project willen verwijderen. Gebruik het uninstall of un commando om axios:
|
1 |
npm un axios |
U ziet de uitvoer:

Hoewel het uninstall commando de dependency heeft verwijderd, hebben we geen melding van de verwijdering ontvangen. Laten we de dependencies weergeven om te zien hoeveel we er nu hebben:
|
1 |
npm ls --depth 0 |
U ziet de uitvoer zonder dat de axios-dependency in de lijst staat:

-
Modules auditeren
Als de in uw project geïnstalleerde dependencies vatbaar zijn voor mogelijke beveiligingsrisico's, kunt u deze detecteren. Eerst moet u een verouderde versie van de request-module installeren om te zien hoe de audit-module werkt:
|
1 |
npm i request@2.60.0 |
U ziet de uitvoer waarin wordt gevraagd om bedreigingen of kwetsbaarheden op te lossen:

Om details over kwetsbaarheden en bedreigingen uit te vouwen, gebruikt u het audit commando:
|
1 |
npm audit |
U ziet een gedetailleerd beveiligingsrapport:

Om deze kwetsbaarheden op te lossen, gebruikt u het fix commando:
|
1 |
npm audit fix |
U ziet de uitvoer:

U hebt misschien gemerkt dat twee van de negen kwetsbaarheden zijn opgelost. De resterende zeven kwetsbaarheden blijven echter bestaan in uw dependencies omdat de audit fix niet alle problemen oplost. Om dit probleem op te lossen, moet u mogelijk uw dependency bijwerken naar een hogere versie met behulp van een andere API. Wees voorzichtig bij het bijwerken, want de kans bestaat dat u code hoger in de dependency tree beschadigt. Gebruik het volgende commando om te bevestigen dat de kwetsbaarheden zijn verdwenen:
|
1 |
npm audit fix --force |
Wees voorzichtig bij het gebruik van een andere API om kwetsbaarheidsbedreigingen op te lossen, want als u er niet zeker van bent, kan dit de functionaliteit van de code beschadigen.
Conclusie
Kortom, we hebben gedemonstreerd hoe u Node.js modules gebruikt met npm and package.json. Daarnaast hebben we de methoden besproken voor het weergeven, bijwerken, beheren, auditeren en deïnstalleren van onze pakketdependencies. Als volgende uitdaging moedigen we u aan om de concepten uit deze handleiding te gebruiken en zelf te experimenteren met het installeren en testen van pakketten. U kunt ook proberen om Node.js-applicaties te bouwen en dependencies te configureren om uw leerproces te versnellen.
Daarnaast zijn er nog veel meer leermaterialen over Node.js en Javascript-onderwerpen die u kunt vinden op onze blog:
- Node.js installeren op CentOS 8: een complete handleiding
- PostgreSQL verbinden met Node.js-applicaties: een handleiding
- HTTP-client Axios gebruiken in een React-applicatie: een handleiding
- Hoe u een Node.js (Express.js) app implementeert met Docker op Ubuntu 20.04
Veel computerplezier!
Reacties
Nog geen reacties. Wees de eerste.