Wil je je zelfgemaakte toepassingen of programmaonderdelen aan andere gebruikers van Node.js ter beschikking stellen, dan adviseren wij een publicatie via npm. De npm registry is voor de community een centraal archief voor modules van derden. In principe kan elke gebruiker van Node.js modules aanbieden. Voorwaarde hiervoor is een gratis registratie bij npm.
Let op: Naast een gratis account, biedt npm ook betaalde abonnementen voor individuele ontwikkelaars en teams aan, die een uitgebreide reeks extra functies bieden.
Om je bij npm te registreren, ga je als volgt te werk:
- Ga naar de npm startpagina .
- Vul het inschrijfformulier in en stuur het terug.
- Bevestig je e-mailadres.
Je kunt nu inloggen via de webinterface onder www.npmjs.com. Als alternatief stelt npm ook de volgende opdracht voor het aanmelden via de terminal ter beschikking:
npm login
Telkens wanneer je je via de terminal aanmeldt, wordt je gevraagd om je gebruikersnaam, wachtwoord en e-mailadres. Nadat je bent ingelogd via de terminal kun je een willekeurig aantal Node.js-modules publiceren.
Voorwaarde voor de publicatie van een module is dat deze een volledig package.json bevat, met alle metadata voor de module. Standaard bevat dit metadatabestand de volgende informatie:
- name: de naam van je module (verplicht)
- version: de versie van je module (verplicht)
- description: een korte beschrijving van je module
- entry point: het oorspronkelijke bestand van je applicatie (bijv. index.js)
- test command: een commando dat kan worden gebruikt om tests te starten (indien beschikbaar)
- git repository: URL naar een git repository, bijv. GitHub (indien beschikbaar)
- keywords: sleutelwoorden voor de vindbaarheid via de npm-zoekfunctie
- author: je naam
- license: de licentie waaronder het project wordt gepubliceerd (bv. MIT)
Node.js-gebruikers die de package .json niet handmatig willen schrijven, kunnen de volgende opdrachtregelopdracht gebruiken:
npm init
Deze start een commandoregelprogramma dat basis-metadata in de interactieve modus opzoekt en vervolgens een JSON-bestand aanmaakt volgens onderstaand schema:
{
"name": "module-name",
"version": "1.0.0",
"description": "An example module to illustrate the usage of a package.json",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "https://github.com/username/repo.git"
},
"keywords": [
"example"
],
"author": "John Doe",
"license": "MIT"
}
Let op: Het via npm init aangemaakte package.json moet normaal gesproken handmatig worden aangevuld, bijvoorbeeld met een lijst van derdenmodules die voor het programmaverloop nodig zijn. Deze worden opgenomen onder dependencies (afhankelijkheden).
"dependencies": {
"express": "4.2.x",
"… "
}
Het huidige voorbeeld toont een afhankelijkheid van de derdenmodule express in de versie 4.2. x.
Alleen de in package.json opgeslagen metadata maken het mogelijk om een module uniek te identificeren via naam en versienummer. Bovendien biedt package.json andere gebruikers van Node.js alle informatie die ze nodig hebben om de module te gebruiken en de benodigde afhankelijkheden te leveren. Want in principe wordt elke module in het register geladen zonder node_modules-map. Als een module van een derde wordt gebruikt, dan gebruikt Node.js de waarden onder dependencies in plaats daarvan om de vereiste modules automatisch te downloaden. Je moet deze metadata daarom altijd specificeren wanneer je eigen derdenmodules in je toepassing opneemt.
Wanneer je alle relevante metadata in de package.json hebt gestopt, staat niets de publicatie van je toepassing meer in de weg. De upload naar de npm-registry wordt in drie eenvoudige stappen uitgevoerd:
1. Inloggen
Log in bij npm via de terminal.
npm login
2. Applicatie kiezen
Navigeer naar de directory van de toepassing die je als module wilt publiceren.
3. Module publiceren
Voer de volgende opdracht in de terminal in en bevestig met Enter:
npm publish
Het commando npm publish pakt de geselecteerde module (applicatiecode en package.json) als een tar-archief en uploadt deze naar het npm-registry.
Let op: een gepubliceerde module kan alleen binnen de eerste 24 uur na publicatie worden verwijderd. Gebruik daarvoor het volgende commando:
npm unpublish
Modules die langer dan 24 uur online zijn, kunnen niet meer door de gebruiker worden verwijderd. Neem in dit geval contact op met de npm-support. Deze unpublish-functie is bedoeld om te voorkomen dat gebruikers van Node.js applicaties ontwikkelen die afhankelijk zijn van modules die later niet meer beschikbaar zijn.