Zoeken…


Invoering

Node Package Manager (npm) biedt de volgende twee hoofdfunctionaliteiten: Online repositories voor node.js pakketten / modules die doorzoekbaar zijn op search.nodejs.org. Opdrachtregelhulpprogramma om Node.js-pakketten te installeren, versiebeheer en afhankelijkheidsbeheer van Node.js-pakketten uit te voeren.

Syntaxis

parameters

Parameter Voorbeeld
toegang npm publish --access=public
bak npm bin -g
Bewerk npm edit connect
helpen npm help init
in het npm init
installeren npm install
koppeling npm link
gedroogde pruim npm prune
publiceren npm publish ./
herstarten npm restart
begin npm start
hou op npm start
bijwerken npm update
versie npm version

Pakketten installeren

Invoering

Pakket is een term die door npm wordt gebruikt om tools aan te geven die ontwikkelaars voor hun projecten kunnen gebruiken. Dit omvat alles van bibliotheken en frameworks zoals jQuery en AngularJS tot taaklopers zoals Gulp.js. De pakketten komen in een map met de naam node_modules , die ook een bestand package.json zal bevatten. Dit bestand bevat informatie over alle pakketten, inclusief eventuele afhankelijkheden, dit zijn extra modules die nodig zijn om een bepaald pakket te gebruiken.

Npm gebruikt de opdrachtregel om zowel pakketten te installeren als te beheren, dus gebruikers die proberen npm te gebruiken, moeten bekend zijn met basisopdrachten op hun besturingssysteem, dwz: mappen doorlopen en de inhoud van mappen kunnen zien.


NPM installeren

Merk op dat NPM geïnstalleerd moet zijn om pakketten te installeren.

De aanbevolen manier om NPM te installeren, is door een van de installatieprogramma's op de downloadpagina van Node.js te gebruiken. U kunt controleren of u al node.js hebt geïnstalleerd door de opdracht npm -v of de npm version voeren.

Controleer na het installeren van NPM via het installatieprogramma van Node.js op updates. Dit komt omdat NPM vaker wordt bijgewerkt dan het installatieprogramma van Node.js. Voer de volgende opdracht uit om te controleren op updates:

npm install npm@latest -g

Hoe pakketten te installeren

Om een of meer pakketten te installeren, gebruikt u het volgende:

npm install <package-name>
# or
npm i <package-name>...

# e.g. to install lodash and express
npm install lodash express

Opmerking : hiermee wordt het pakket geïnstalleerd in de map waarin de opdrachtregel zich momenteel bevindt, dus het is belangrijk om te controleren of de juiste map is gekozen

Als u al een package.json bestand in uw huidige werkmap hebt en afhankelijkheden daarin zijn gedefinieerd, zal npm install automatisch alle afhankelijkheden in het bestand oplossen en installeren. U kunt ook de verkorte versie van de opdracht npm install gebruiken, namelijk: npm i

Als u een specifieke versie van een pakket wilt installeren, gebruikt u:

npm install <name>@<version>

# e.g. to install version 4.11.1 of the package lodash
npm install [email protected]

Als u een versie wilt installeren die overeenkomt met een specifiek versiebereik, gebruikt u:

npm install <name>@<version range>

# e.g. to install a version which matches "version >= 4.10.1" and "version < 4.11.1"
# of the package lodash
npm install lodash@">=4.10.1 <4.11.1"

Als u de nieuwste versie wilt installeren, gebruikt u:

npm install <name>@latest

De bovenstaande opdrachten zoeken naar pakketten in de centrale npm repository op npmjs.com . Als u niet vanuit het npm register wilt installeren, worden andere opties ondersteund, zoals:

# packages distributed as a tarball
npm install <tarball file>
npm install <tarball url>

# packages available locally
npm install <local path>

# packages available as a git repository
npm install <git remote url>

# packages available on GitHub
npm install <username>/<repository>

# packages available as gist (need a package.json)
npm install gist:<gist-id>

# packages from a specific repository
npm install --registry=http://myreg.mycompany.com <package name>

# packages from a related group of packages 
# See npm scope
npm install @<scope>/<name>(@<version>)

# Scoping is useful for separating private packages hosted on private registry from
# public ones by setting registry for specific scope
npm config set @mycompany:registry http://myreg.mycompany.com
npm install @mycompany/<package name>

Gewoonlijk worden modules lokaal geïnstalleerd in een map met de naam node_modules , die u kunt vinden in uw huidige werkmap. Dit is de map die require() om modules te laden om ze voor u beschikbaar te maken.

Als u al een package.json bestand hebt gemaakt, kunt u de optie --save (shorthand -S ) of een van de varianten gebruiken om het geïnstalleerde pakket automatisch als afhankelijkheid aan uw package.json toe te voegen. Als iemand anders uw pakket installeert, zal npm automatisch de afhankelijkheden uit het bestand package.json lezen en de vermelde versies installeren. Merk op dat u nog steeds uw afhankelijkheden kunt toevoegen en beheren door het bestand later te bewerken, dus het is meestal een goed idee om afhankelijkheden bij te houden, bijvoorbeeld met:

npm install --save <name> # Install dependencies 
# or
npm install -S <name> # shortcut version --save 
# or
npm i -S <name>

Om pakketten te installeren en alleen op te slaan als ze nodig zijn voor ontwikkeling, niet om ze uit te voeren, niet als ze nodig zijn om de toepassing uit te voeren, volgt u de volgende opdracht:

npm install --save-dev <name> # Install dependencies for development purposes
# or
npm install -D <name> # shortcut version --save-dev
# or
npm i -D <name>

Afhankelijkheden installeren

Sommige modules bieden niet alleen een bibliotheek die u kunt gebruiken, maar ze bieden ook een of meer binaire bestanden die bedoeld zijn om te worden gebruikt via de opdrachtregel. Hoewel u deze pakketten nog steeds lokaal kunt installeren, verdient het vaak de voorkeur om ze wereldwijd te installeren, zodat de opdrachtregelprogramma's kunnen worden ingeschakeld. In dat geval koppelt npm automatisch de binaire bestanden aan de juiste paden (bijvoorbeeld /usr/local/bin/<name> ) zodat ze kunnen worden gebruikt vanaf de opdrachtregel. Gebruik het volgende om een pakket wereldwijd te installeren:

npm install --global <name>
# or
npm install -g <name>
# or
npm i -g <name>

# e.g. to install the grunt command line tool
npm install -g grunt-cli

Als u een lijst wilt zien van alle geïnstalleerde pakketten en de bijbehorende versies in de huidige werkruimte, gebruikt u:

npm list
npm list <name>

Door een optioneel naamargument toe te voegen, kan de versie van een specifiek pakket worden gecontroleerd.


Opmerking: als u toestemmingsproblemen tegenkomt terwijl u probeert een npm-module wereldwijd te installeren, weersta dan de verleiding om een sudo npm install -g ... te geven om het probleem te verhelpen. Het is gevaarlijk om scripts van derden toe te staan om op uw systeem te worden uitgevoerd met verhoogde rechten. Het toestemmingsprobleem kan betekenen dat u een probleem hebt met de manier waarop npm zelf is geïnstalleerd. Als u Node wilt installeren in gebruikersomgevingen met sandbox, wilt u misschien nvm gebruiken .

Als u buildtools of andere alleen-afhankelijkheden (bijvoorbeeld Grunt) hebt, wilt u deze misschien niet gebundeld hebben met de applicatie die u implementeert. Als dat het geval is, wil je het als een ontwikkeling afhankelijkheid, die opgenomen is in package.json onder devDependencies . Gebruik --save-dev (of -D ) om een pakket te installeren als alleen-afhankelijkheid voor ontwikkeling.

npm install --save-dev <name> // Install development dependencies which is not included in production 
# or
npm install -D <name>

U zult zien dat het pakket dan wordt toegevoegd aan de devDependencies van uw package.json .

Om afhankelijkheden van een gedownload / gekloond node.js-project te installeren, kunt u eenvoudig gebruiken

npm install
# or
npm i

npm leest automatisch de afhankelijkheden van package.json en installeert ze.

NPM achter een proxyserver

Als uw internettoegang via een proxyserver is, moet u mogelijk npm-installatieopdrachten wijzigen die toegang hebben tot externe opslagplaatsen. npm gebruikt een configuratiebestand dat kan worden bijgewerkt via de opdrachtregel:

npm config set

U kunt uw proxy-instellingen vinden in het instellingenpaneel van uw browser. Nadat u de proxy-instellingen hebt verkregen (server-URL, poort, gebruikersnaam en wachtwoord); u moet uw npm-configuraties als volgt configureren.

$ npm config set proxy http://<username>:<password>@<proxy-server-url>:<port>
$ npm config set https-proxy http://<username>:<password>@<proxy-server-url>:<port>

username , password , port velden zijn optioneel. Nadat u deze hebt ingesteld, zouden uw npm install , npm i -g enz. npm i -g werken.

Scopes en repositories

# Set the repository for the scope "myscope"
npm config set @myscope:registry http://registry.corporation.com

# Login at a repository and associate it with the scope "myscope"
npm adduser --registry=http://registry.corporation.com --scope=@myscope

# Install a package "mylib" from the scope "myscope"
npm install @myscope/mylib

Als de naam van uw eigen pakket begint met @myscope en het bereik "myscope" is gekoppeld aan een andere repository, uploadt npm publish uw pakket in plaats daarvan naar die repository.

U kunt deze instellingen ook behouden in een .npmrc bestand:

@myscope:registry=http://registry.corporation.com
//registry.corporation.com/:_authToken=xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxx

Dit is handig bij het automatiseren van de build op een CI-server, bijv

Pakketten verwijderen

Om een of meer lokaal geïnstalleerde pakketten te verwijderen, gebruikt u:

npm uninstall <package name>

De verwijderingsopdracht voor npm heeft vijf aliassen die ook kunnen worden gebruikt:

npm remove <package name>
npm rm <package name>
npm r <package name>

npm unlink <package name>
npm un <package name>

Als u het pakket uit het bestand package.json wilt verwijderen als onderdeel van de verwijdering, gebruikt u de vlag --save (steno: -S ):

npm uninstall --save <package name>
npm uninstall -S <package name>

Gebruik voor een ontwikkelingsafhankelijkheid de vlag --save-dev (steno: -D ):

npm uninstall --save-dev <package name>
npm uninstall -D <package name>

Gebruik voor een optionele afhankelijkheid de vlag --save-optional (steno: -O ):

npm uninstall --save-optional <package name>
npm uninstall -O <package name>

Voor pakketten die wereldwijd zijn geïnstalleerd, gebruikt u de vlag --global (steno: -g ):

npm uninstall -g <package name>

Basic semantische versiebeheer

Voordat u een pakket publiceert, moet u het versienummer. npm ondersteunt semantische versiebeheer , dit betekent dat er patch-, kleine en grote releases zijn.

Als uw pakket bijvoorbeeld versie 1.2.3 heeft om de versie te wijzigen, moet u:

  1. patch release: npm version patch => 1.2.4
  2. minor release: npm version minor => 1.3.0
  3. major release: npm version major => 2.0.0

U kunt ook een versie rechtstreeks opgeven met:

npm version 3.1.4 => 3.1.4

Wanneer je een pakketversie instelt met een van de bovenstaande npm-commando's, zal npm het versieveld van het pakket.json-bestand wijzigen, vastleggen en ook een nieuwe Git-tag maken met de versie voorafgegaan door een "v", alsof je hebben de opdracht gegeven:

git tag v3.1.4

In tegenstelling tot andere pakketbeheerders zoals Bower, is het npm-register niet afhankelijk van het maken van Git-tags voor elke versie. Maar als u tags wilt gebruiken, moet u eraan denken om de nieuw gemaakte tag te pushen nadat u tegen de pakketversie bent gestoten:

git push origin master (om de wijziging naar package.json te pushen)

git push origin v3.1.4 (om de nieuwe tag te pushen)

Of u kunt dit in één keer doen met:

git push origin master --tags

Een pakketconfiguratie instellen

Node.js-pakketconfiguraties bevinden zich in een bestand met de naam package.json dat u in de hoofdmap van elk project kunt vinden. U kunt een geheel nieuw configuratiebestand instellen door te bellen naar:

npm init

Dat zal proberen de huidige werkmap te lezen voor Git-repositoryinformatie (als deze bestaat) en omgevingsvariabelen om enkele van de tijdelijke waarden voor u te proberen aan te vullen. Anders biedt het een invoerdialoogvenster voor de basisopties.

Als u een package.json met standaardwaarden wilt maken, gebruikt u:

npm init --yes
# or
npm init -y 

Als u een package.json voor een project dat u niet als een npm-pakket gaat publiceren (dat wil zeggen uitsluitend om uw afhankelijkheden af te ronden), kunt u deze intentie overbrengen in uw package.json bestand:

  1. Stel optioneel het private bezit in op true om onbedoeld publiceren te voorkomen.
  2. Stel optioneel de license eigenschap in op "ONGELICENTIEERD" om anderen het recht te ontzeggen om uw pakket te gebruiken.

Om een pakket te installeren en automatisch op te slaan in uw package.json , gebruikt u:

npm install --save <package>

Het pakket en bijbehorende metagegevens (zoals de pakketversie) verschijnen in uw afhankelijkheden. Als u opslaat of als een ontwikkelingsafhankelijkheid (met --save-dev ), verschijnt het pakket in plaats daarvan in uw devDependencies .

Met dit bare-bones package.json zul je waarschuwingsberichten tegenkomen tijdens het installeren of upgraden van pakketten, waarin je wordt verteld dat je een beschrijving en het veld voor de opslag mist. Hoewel het veilig is om deze berichten te negeren, kun je ze verwijderen door het pakket.json in een teksteditor te openen en de volgende regels aan het JSON-object toe te voegen:

[...]
"description": "No description",
"repository": {
  "private": true
},
[...]

Een pakket publiceren

Zorg er eerst voor dat u uw pakket hebt geconfigureerd (zoals gezegd in Een pakketconfiguratie instellen ). Vervolgens moet u zijn aangemeld bij npmjs.

Als u al een npm-gebruiker hebt

npm login

Als u geen gebruiker heeft

npm adduser

Om te controleren of uw gebruiker is geregistreerd in de huidige client

npm config ls

Gebruik daarna uw pakket wanneer het klaar is om te worden gepubliceerd

npm publish

En je bent klaar.

Als u een nieuwe versie moet publiceren, zorg er dan voor dat u uw pakketversie bijwerkt, zoals vermeld in Semantische basisversie . Anders laat npm u het pakket niet publiceren.

{
    name: "package-name",
    version: "1.0.4"
}

Scripts uitvoeren

U kunt scripts definiëren in uw package.json , bijvoorbeeld:

{
  "name": "your-package",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "author": "",
  "license": "ISC",
  "dependencies": {},
  "devDependencies": {},
  "scripts": {
    "echo": "echo hello!"
  }
}

Om het echo script uit te voeren, voert u npm run echo uit vanaf de opdrachtregel. Willekeurige scripts, zoals echo hierboven, moeten worden uitgevoerd met npm run <script name> . npm heeft ook een aantal officiële scripts die het in bepaalde levensfasen van het pakket uitvoert (zoals preinstall ). Zie hier voor het volledige overzicht van hoe npm omgaat met scriptvelden.

npm-scripts worden meestal gebruikt voor zaken als het starten van een server, het bouwen van het project en het uitvoeren van tests. Hier is een realistischer voorbeeld:

  "scripts": {
    "test": "mocha tests",
    "start": "pm2 start index.js"
  }

In de scripts opdrachtregelprogramma's zoals mocha wanneer deze wereldwijd of lokaal worden geïnstalleerd. Als het opdrachtregelitem niet bestaat in het systeem PATH, controleert npm ook uw lokaal geïnstalleerde pakketten.

Als uw scripts erg lang worden, kunnen ze worden opgesplitst in delen, zoals deze:

  "scripts": {
    "very-complex-command": "npm run chain-1 && npm run chain-2",
    "chain-1": "webpack",
    "chain-2": "node app.js"
  }

Ongewenste pakketten verwijderen

Voer de volgende opdracht uit om externe pakketten te verwijderen (pakketten die zijn geïnstalleerd maar niet in de afhankelijkheidslijst):

npm prune

Om alle dev pakketten te verwijderen, voeg --production flag toe:

npm prune --production

Meer hierover

Lijst met momenteel geïnstalleerde pakketten

Gebruik om een lijst (boomstructuur) van de momenteel geïnstalleerde pakketten te genereren

npm list

ls, la en ll zijn aliassen van list commando. la en ll commando's tonen uitgebreide informatie zoals beschrijving en repository.

opties

Het antwoordformaat kan worden gewijzigd door opties door te geven.

npm list --json
  • json - Toont informatie in json-formaat
  • lang - Toont uitgebreide informatie
  • parseable - Toont de parseable-lijst in plaats van de boom
  • wereldwijd - Toont wereldwijd geïnstalleerde pakketten
  • diepte - Maximale weergave diepte van afhankelijkheid boom
  • dev / development - Toont devDependencies
  • prod / production - Toont afhankelijkheden

Als je wilt, kun je ook naar de startpagina van het pakket gaan.

npm home <package name>

Bijwerken van npm en pakketten

Omdat npm zelf een Node.js-module is, kan het met zichzelf worden bijgewerkt.

Als OS Windows is, moet de opdrachtprompt worden uitgevoerd als Admin

npm install -g npm@latest

Als u wilt controleren op bijgewerkte versies, kunt u het volgende doen:

npm outdated

Om een specifiek pakket bij te werken:

npm update <package name>

Hiermee wordt het pakket bijgewerkt naar de nieuwste versie volgens de beperkingen in package.json

Als u ook de bijgewerkte versie in package.json wilt vergrendelen:

npm update <package name> --save

Modules vergrendelen voor specifieke versies

Standaard installeert npm de nieuwste beschikbare versie van modules volgens de semantische versie van elke afhankelijkheid. Dit kan problematisch zijn als een module-auteur zich niet aan semver houdt en bijvoorbeeld in een module-update brekende wijzigingen aanbrengt.

Gebruik de versie van elke afhankelijkheden (en de versies van hun afhankelijkheden, enz.) Voor de specifieke versie die lokaal in de map node_modules geïnstalleerd.

npm shrinkwrap

Hiermee maakt u naast uw package.json een npm-shrinkwrap.json die de specifieke versies van afhankelijkheden weergeeft.

Instellen voor wereldwijd geïnstalleerde pakketten

U kunt npm install -g gebruiken om een "globaal" pakket te installeren. Dit wordt meestal gedaan om een uitvoerbaar bestand te installeren dat u kunt toevoegen aan uw uit te voeren pad. Bijvoorbeeld:

npm install -g gulp-cli

Als u uw pad bijwerkt, kunt u gulp rechtstreeks bellen.

Op veel besturingssystemen zal npm install -g proberen te schrijven naar een map waar uw gebruiker mogelijk niet naar kan schrijven, zoals /usr/bin . Gebruik in dit geval geen sudo npm install , want er is een mogelijk beveiligingsrisico van het uitvoeren van willekeurige scripts met sudo en de rootgebruiker kan in uw huis mappen aanmaken waarnaar u niet kunt schrijven, waardoor toekomstige installaties moeilijker worden.

Via je configuratiebestand ~/.npmrc kun je npm vertellen waar je globale modules ~/.npmrc . Dit wordt het prefix dat u kunt bekijken met het npm prefix .

prefix=~/.npm-global-modules

Dit gebruikt het voorvoegsel wanneer u npm install -g uitvoert. U kunt ook npm install --prefix ~/.npm-global-modules gebruiken om het voorvoegsel in te stellen wanneer u installeert. Als het voorvoegsel hetzelfde is als uw configuratie, hoeft u -g niet te gebruiken.

Om de wereldwijd geïnstalleerde module te gebruiken, moet deze op uw pad zijn:

export PATH=$PATH:~/.npm-global-modules/bin

Als u nu npm install -g gulp-cli uitvoert, kunt u gulp .

Opmerking: Wanneer u npm install (zonder -g ), is het voorvoegsel de map met package.json of de huidige map als er geen in de hiërarchie wordt gevonden. Dit creëert ook een map node_modules/.bin met de uitvoerbare bestanden. Als u een uitvoerbaar bestand wilt gebruiken dat specifiek is voor een project, is het niet nodig om npm install -g . Je kunt die in node_modules/.bin .

Projecten koppelen voor sneller debuggen en ontwikkelen

Het bouwen van projectafhankelijkheden kan soms een vervelende taak zijn. Gebruik npm link plaats van een pakketversie te publiceren naar NPM en de afhankelijkheid te installeren om de wijzigingen te testen. npm link maakt een symlink zodat de nieuwste code kan worden getest in een lokale omgeving. Dit maakt het testen van wereldwijde tools en projectafhankelijkheden eenvoudiger door de nieuwste code uit te voeren voordat een gepubliceerde versie wordt gemaakt.

Hulp tekst

NAME
       npm-link - Symlink a package folder

SYNOPSIS
         npm link (in package dir)
         npm link [<@scope>/]<pkg>[@<version>]

         alias: npm ln

Stappen voor het koppelen van projectafhankelijkheden

Houd er bij het maken van de afhankelijkheidskoppeling rekening mee dat naar de pakketnaam wordt verwezen in het bovenliggende project.

  1. CD in een afhankelijkheidsmap (bijvoorbeeld: cd ../my-dep )
  2. npm link
  3. CD in het project dat de afhankelijkheid gaat gebruiken
  4. npm link my-dep of als namespaced npm link @namespace/my-dep

Stappen voor het koppelen van een globale tool

  1. CD in de projectmap (bijvoorbeeld: cd eslint-watch )
  2. npm link
  3. Gebruik het gereedschap
  4. esw --quiet

Problemen die zich kunnen voordoen

Het koppelen van projecten kan soms problemen veroorzaken als de afhankelijkheid of het algemene hulpprogramma al is geïnstalleerd. npm uninstall (-g) <pkg> en vervolgens het uitvoeren van de npm link lost normaal problemen op die zich kunnen voordoen.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow