Node.js
NPM
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
- npm <command> waarbij <command> een van is:
- Voeg gebruiker toe
- Voeg gebruiker toe
- apihelp
- auteur
- bak
- bugs
- c
- cache
- voltooiing
- config
- ddp
- deduplicatie
- afkeuren
- docs
- Bewerk
- onderzoeken
- FAQ
- vind
- find-dupes
- krijgen
- helpen
- help-search
- huis
- ik
- installeren
- info
- in het
- isntall
- kwesties
- la
- koppeling
- lijst
- ll
- ln
- Log in
- ls
- verouderd
- eigenaar
- pak
- voorvoegsel
- gedroogde pruim
- publiceren
- r
- rb
- herbouwen
- verwijderen
- repo
- herstarten
- rm
- wortel
- run-script
- s
- se
- zoeken
- reeks
- tonen
- krimpfolie
- ster
- sterren
- begin
- hou op
- submodule
- label
- test
- tst
- un
- uninstall
- unlink
- unpublish
- Ster verwijderen
- omhoog
- bijwerken
- v
- versie
- visie
- wie ben ik
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:
- patch release:
npm version patch
=> 1.2.4 - minor release:
npm version minor
=> 1.3.0 - 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:
- Stel optioneel het
private
bezit in op true om onbedoeld publiceren te voorkomen. - 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
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.
- CD in een afhankelijkheidsmap (bijvoorbeeld:
cd ../my-dep
) -
npm link
- CD in het project dat de afhankelijkheid gaat gebruiken
-
npm link my-dep
of als namespacednpm link @namespace/my-dep
Stappen voor het koppelen van een globale tool
- CD in de projectmap (bijvoorbeeld:
cd eslint-watch
) -
npm link
- Gebruik het gereedschap
-
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.