Terug naar blog

Node.js-modules gebruiken met npm en package.json: Een handleiding

Node.js-modules gebruiken met npm en package.json: Een handleiding

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:

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:

Gebruik vervolgens het cd-commando om naar de nieuw gemaakte map te gaan:

Dan, voer npm in om de interactieve prompt te initialiseren:

Daarna zie je de uitvoer:

Node.js Modules npm init 1

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:

Node.js Modules npm init

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:

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:

Node.js Modules install axios

Open de package.json met behulp van nano of een teksteditor naar keuze:

Let op de nieuw toegeegde eigenschap die onderaan het codeblok is gemarkeerd:

Node.js Modules package json

  • 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:

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:

U ziet de uitvoer:

dev package json

  • 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:

Ga vervolgens naar de cloned_locator:

Importeer package.json en package-lock.json-bestanden van locator naar cloned_locator:

De . staat voor de huidige map. Installeer de vereiste modules met de volgende opdracht:

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:

Ga daarna terug naar de 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:

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:

U ziet de uitvoer:

hexo version

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:

  1. Modules kunt weergeven

  2. Modules kunt bijwerken

  3. Modules kunt verwijderen

  4. Modules kunt controleren (auditen)

Laten we ze allemaal in detail bespreken:

  1. 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:

U ziet de uitvoer:

npm list op

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:

U ziet de uitvoer:

npm list depth zero

  1. 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:

U ziet de uitvoer:

Outdated

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:

U ziet de uitvoer:

update eslint

In plaats van ze één voor één bij te werken, kunt u ook alle modules tegelijk bijwerken met het up commando:

  1. 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:

U ziet de uitvoer:

Uninstall axios

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:

U ziet de uitvoer zonder dat de axios-dependency in de lijst staat:

npm list

  1. 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:

U ziet de uitvoer waarin wordt gevraagd om bedreigingen of kwetsbaarheden op te lossen:

add request

Om details over kwetsbaarheden en bedreigingen uit te vouwen, gebruikt u het audit commando:

U ziet een gedetailleerd beveiligingsrapport:

Node.js Modules Audit security report

Om deze kwetsbaarheden op te lossen, gebruikt u het fix commando:

U ziet de uitvoer:

audit update

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:

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:

Veel computerplezier!

author

Preslav Dobrev

Auteur · CloudSigma

Preslav Dobrev is een creatief ontwerper bij CloudSigma, met de nadruk op een consistente bedrijfsidentiteit door middel van traditionele en innovatieve marketingkanalen. Hij is bedreven in het samenvoegen van artistieke visie met strategische marketing om impactvolle merkverhalen te creëren.

Reacties

Nog geen reacties. Wees de eerste.