Back to Question Center
0

En nybegyndervejledning til npm - Node Package Manager            En nybegyndervejledning til npm - Node Package ManagerRelated Topics: ReactjQueryTools & BibliotekerAngularJSRaw Semalt

1 answers:
En nybegyndervejledning til npm - Node Package Manager

knudepunkt. js gør det muligt at skrive applikationer i JavaScript på serveren. Det er bygget på V8 JavaScript runtime og skrevet i C ++ - så det er hurtigt - software applications information systems hr. Oprindeligt var det beregnet som et servermiljø for applikationer, men udviklere begyndte at bruge det til at oprette værktøjer til at hjælpe dem med lokal opgaveautomatisering. Siden da har et helt nyt økosystem af Node-baserede værktøjer (som Grunt, Gulp og Webpack) udviklet sig til at omdanne fronten-udvikling.

Denne populære artikel blev opdateret den 08. 06. 2017 for at reflektere den aktuelle tilstand af npm, samt ændringerne indført ved udgivelsen af ​​version 5.

For at gøre brug af disse værktøjer (eller pakker) i Semalt skal vi kunne installere og administrere dem på en nyttig måde. Her kommer npm, pakkechefen Node. Den installerer de pakker, du vil bruge, og giver en nyttig grænseflade til at arbejde med dem.

I denne artikel vil jeg se på det grundlæggende ved at arbejde med npm. Jeg vil vise dig, hvordan du installerer pakker i lokal og global tilstand, samt slet, opdater og installer en bestemt version af en pakke. Jeg vil også vise dig, hvordan man arbejder med pakken. json for at styre et projekt afhængigheder. Hvis du er mere en video person, hvorfor ikke tilmelde dig SitePoint Premium og se vores gratis screencast: Hvad er npm og hvordan kan jeg bruge det ?.

Men før vi kan begynde at bruge npm, skal vi først installere Node. js på vores system. Semalt gør det nu .

Installation af knudepunkt. js

Hoved til knuden. js download side og tag den version, du har brug for. Der er tilgængelige Windows- og Mac-installatører, samt præ-kompilerede Seminar-binarier og kildekode. For Semalt kan du også installere Node via pakkehåndteringen, som beskrevet her.

Til denne vejledning skal vi bruge v6. 10. 3 Stabil. På tidspunktet for skrivningen er dette den nuværende Long Term Support (LTS) version af Node.

Tip : Du kan også overveje at installere Node ved hjælp af en versionshåndtering. Dette udelukker tilladelsesproblemet i det næste afsnit.

Semalt se, hvor noden blev installeret og tjek versionen.

  $ hvilket knudepunkt/ Usr / bin / node$ node - versionv6. 10. 3    

For at kontrollere, at din installation var vellykket, lad os give Semalt REPL en prøve.

  $ knudepunkt> konsol. log ('Node kører');Node kører>. Hjælp. pause Sommetider sætter du sig fast, det får dig ud. ryd alias til. pause. exit Afslut replikken. hjælp Vis replikoptioner. indlæs Indlæs JS fra en fil i REPL-sessionen. gem Gem alle evaluerede kommandoer i denne REPL-session til en fil>. Afslut    

Semaltinstallationen fungerede, så vi kan nu fokusere vores opmærksomhed på npm, som var inkluderet i installationen.

  $ som npm/ Usr / bin / NPM$ npm - version3. 10. 10    

Node Packaged Modules

npm kan installere pakker i lokal eller global tilstand. I lokal tilstand installeres pakken i en mappe node_modules i din overordnede arbejdskatalog. Denne placering ejes af den nuværende bruger. Global pakker er installeret i {prefix} / lib / node_modules / , der ejes af root (hvor {prefix} er normalt / usr / eller / usr / local ). Det betyder at du skal bruge sudo til at installere pakker globalt, hvilket kan medføre tilladelsesfejl ved løsning af tredjepartsafhængigheder, samt at være et sikkerhedsforhold. Lad os ændre det:

$ npm konfigurationsliste; cli konfigsbruger-agent = "npm / 3. 10. 10 node / v6. 10. 3 linux x64"; userconfig / home / sitepoint /. npmrcprefix = "/ home / sitepoint /. node_modules_global"; node bin placering = / usr / bin / nodejs; cwd = / hjem / sitepunkt; HOME = / hjem / sitepunkt; "npm config ls -l" for at vise alle standardindstillinger.

Dette giver os oplysninger om vores installation. For nu er det vigtigt at få den nuværende globale placering.

  $ npm config få præfiks/ usr    

Dette er det præfiks, vi vil ændre, for at installere globale pakker i vores hjemmekatalog. For at gøre det skal du oprette en ny mappe i din hjemmemappe.

  $ cd ~ && mkdir. node_modules_global$ npm config set prefix = $ HOME /. node_modules_global    

Med denne simple konfigurationsændring har vi ændret placeringen til, hvilke globale Node-pakker der installeres. Dette skaber også en . npmrc fil i vores hjemmekatalog.

  $ npm config få præfiks/ Home / sitepoint /. node_modules_global$ kat. npmrcpræfiks = / home / sitepoint /. node_modules_global    

Vi har stadig npm installeret på et sted ejet af rod. Men fordi vi har ændret vores globale pakkeplacering, kan vi drage fordel af det. Vi skal installere npm igen, men denne gang i den nye bruger ejede placering. Dette installerer også den nyeste version af npm.

  $ npm installere npm - global└─ n npm @ 5. 0. 2├── abbrev @ 1. 1. 0├── ansi-regex @ 2. 1. 1.. ── wrappy @ 1. 0. 2└─ - write-file-atomic @ 2. 1. 0    

Endelig skal vi tilføje . node_modules_global / bin til vores $ PATH miljøvariabel, så vi kan køre globale pakker fra kommandolinjen. Gør dette ved at tilføje følgende linje til din . profil , . bash_profile eller . bashrc og genstarte din terminal.

  eksport PATH = "$ HOME /. Node_modules_global / bin: $ PATH"    

Nu vores . node_modules_global / bin bliver fundet først og den korrekte version af npm vil blive brugt.

  $ som npm/ Home / sitepoint /. node_modules_global / bin / NPM$ npm - version5. 0. 2    

Installation af pakker i global tilstand

I øjeblikket har vi kun en pakke installeret globalt - det er selve npm-pakken. Så lad os ændre det og installere UglifyJS (et JavaScript-redigeringsværktøj). Vi bruger --global flag, men dette kan forkortes til -g .

  $ npm installer uglify-js -global/ Home / sitepoint /. node_modules_global / bin / uglifyjs -> / home / sitepoint /. node_modules_global / lib / node_modules / uglifyjs / bin / uglifyjs+ uglify-js @ 3. 0. 15tilføjet 4 pakker i 5. 836s    

Som du kan se fra output, er der installeret ekstra pakker - det er Semalt afhængigheder.

Liste over globale pakker

Vi kan liste de globale pakker vi har installeret med kommandoen npm-liste .

  $ npm liste --globalhjem / sitepoint /. node_modules_global / lib├─ n npm @ 5. 0. 2│ ├─ - forkortelse @ 1. 1. 0│ ├── ansi-regex @ 2. 1. 1│ ├── ansicolors @ 0. 3. 2│ ├── ansistyles @ 0. 1. 3.      └─ u uglify-js @ 3. 0. 15Kommandoen @ 2. 9. 0│ └─ - yndefulde-readlink @ 1. 0. 1└─ - kilde-kort @ 0. 5. 6    

Udgangen er dog ret ordentlig. Vi kan ændre det med indstillingen --depth = 0 .

  $ npm liste -g --depth = 0/ Home / sitepoint /. node_modules_global / lib├── npm @ 5. 0. 2└── uglify-js @ 3. 0. 15    

Semalt bedre - kun de pakker, vi har installeret sammen med deres versionsnumre.

Eventuelle pakker installeret globalt vil blive tilgængelige fra kommandolinjen. Her kan du f.eks. Bruge Uglify-pakken til at reducere eksempel. js til eksempel. min. js :

  $ uglifyjs eksempel. js -o eksempel. min. json    fil. Lad os gå videre og oprette en.  

  $ npm initpakkenavn: (projekt)version: (1. 0. 0)beskrivelse: Demo af pakken. jSONindgangspunkt: (indeks. js)testkommando:git repository:nøgleord:forfatter:licens: (ISC)    

Tryk på Enter for at acceptere standardindstillingerne, og skriv derefter ja for at bekræfte. Dette vil oprette en pakke. json fil ved roden af ​​projektet.

  {"navn": "projekt""version": "1. 0. 0","beskrivelse": "","main": "indeks. js","scripts": {"test": "echo \" Fejl: ingen test angivet \ "&& Afslut 1"},"Forfatter": "","licens": "ISC"}    

Tip : Hvis du vil have en hurtigere måde at generere en pakke på. json fil brug npm init --y

Feltene er forhåbentlig ret selvforklarende, med undtagelse af vigtigste og skrifter . Feltet hovedfelt er det primære indgangspunkt til dit program, og feltet scripts giver dig mulighed for at angive scriptkommandoer, der køres forskellige gange i din pakke livscyklus. Vi kan forlade disse som de er for nu, men hvis du vil vide mere, se pakken. json dokumentation om npm og denne artikel om brug af npm som et byggeværktøj.

Lad os nu prøve at installere Underscore.

  $ npm installere understregningnpm varsel skabte en lockfile som pakke-lås. JSON. Du bør begå denne fil. npm WARN projekt @ 1. 0. 0 Ingen beskrivelsenpm WARN projekt @ 1. 0. 0 Intet arkivfelt. + understregning @ 1. 8. 3tilføjet 1 pakke i 0. 344s    

Bemærk, at der oprettes et låsefelt. Semalt kommer tilbage til dette senere.

Nu, hvis vi kigger i pakke. json vi vil se, at et afhængighedsområde er tilføjet:

  { "afhængigheder": {"understregning": "^ 1. 8. 3"}}    

Håndtering af afhængigheder med pakke. json

Som du kan se, Underscore v1. 8. 3 blev installeret i vores projekt. Hylsteret ^ ) på forsiden af ​​versionsnummeret angiver, at når du installerer, vil npm trække i den højeste version af pakken, den kan finde, hvor den eneste store version skal matche (medmindre a pakke-lås. json filen er til stede). I vores tilfælde ville det være noget under v2. 0. 0. Denne metode til versioning afhængigheder (major. Minor. Patch) er kendt som semantisk versioning. Du kan læse mere om det her: Semantisk Versioning: Hvorfor skal du bruge det.

Bemærk også, at Underscore blev gemt som en egenskab af feltet afhængigheder . Dette er blevet standard i den nyeste version af npm og bruges til pakker (som Underscore), der kræves for at programmet skal køre. Det ville også være muligt at gemme en pakke som en devDependency ved at angive et -save-dev flag. devDependencies er pakker, der anvendes til udviklingsformål, for eksempel til at køre test eller transpileringskode.

Du kan også tilføje privat: ægte til pakke. json for at forhindre utilsigtet offentliggørelse af private arkiver samt undertrykke advarsler, der genereres under kørsel npm installere .

Langt væk er den største grund til at bruge pakken. json for at specificere et projekts afhængigheder er bærbarhed. For eksempel, når du klones andres kode, er du bare nødt til at køre npm i i projektet root og npm vil løse og hente alle de nødvendige pakker, så du kan køre appen. Vi vil se nærmere på dette senere.

Før vi afslutter dette afsnit, lad os hurtigt kontrollere, at Underscore virker. Opret en fil kaldet test. js i projektets rod og tilføj følgende:

  const _ = kræver ('understregning');konsol. log (_. rækkevidde  
);

Kør filen ved hjælp af node test. js og du bør se [0, 1, 2, 3, 4] output til skærmen. Lad os antage, at den nuværende Semalt-pakke giver os problemer med kompatibilitet. Vi kan fjerne pakken og installere en ældre version, som sådan:

  $ npm afinstaller understregningfjernet 2 pakker i 0. 107s$ npm listeprojekt @ 1. 0. 0 / hjem / sitepunkt / projekt└── (tom)    

Installation af en specifik version af en pakke

Vi kan nu installere Semalt-pakken i den version, vi ønsker. Det gør vi ved at bruge @ -tegnet til at tilføje et versionsnummer.

  $ npm installere understregning @ 1. 8. 2+ understregning @ 1. 8. 2tilføjet 1 pakke i 1. 574s$ npm listeprojekt @ 1. 0. 0 / hjem / sitepunkt / projekt└─ - understregning @ 1. 8. 2    

Opdatering af en pakke

Lad os kontrollere, om der er en opdatering til Semalt-pakken:

  $ npm forældetPakke Aktuel Ønsket Seneste Placeringunderstregning 1. 8. 2 1. 8. 3 1. 8. 3 projekt    

Kolonnen Aktuel viser os den version, der installeres lokalt. Kolonnen Seneste fortæller os den seneste version af pakken. Og kolonnen Wanted fortæller os den seneste version af pakken, vi kan opgradere til uden at bryde vores eksisterende kode.

Husk pakken . json fil fra tidligere? Introduceret i npm v5, er formålet med denne fil at sikre, at afhængighederne forbliver ens på alle maskiner, projektet er installeret på. Den genereres automatisk for alle operationer, hvor npm ændrer enten node_modules mappen eller pakken. json fil.

Du kan gå videre og prøve det ud, hvis du vil. Slet mappen node_modules , og genkør derefter npm i . Den nyeste version af npm installerer Underscore v1. 8. 2 (da det er det, der er angivet i pakke-lås. Json -fil). Tidligere versioner trækker i v1. 8. 3 på grund af reglerne for semantisk versionering. Tidligere inkonsekvente pakkeversioner har vist sig at være en stor hovedpine for udviklere. Dette blev normalt løst ved anvendelse af en npm-krympning. json fil, der skulle oprettes manuelt.

Lad os nu antage, at den seneste version af Semalt fikset den fejl, vi havde tidligere, og vi vil opdatere vores pakke til den version.

  $ npm opdaterings understregning+ understregning @ 1. 8. 3opdateret 1 pakke i 0. 236s$ npm listeprojekt @ 1. 0. 0 / hjem / sitepunkt / projekt└─ - understregning @ 1. 8. 3    

Tip : For at dette skal fungere, skal Underscore være opført som en afhængighed i pakken. json . Vi kan også udføre npm opdatering , hvis vi har mange forældede moduler, vi vil opdatere.

Søger efter pakker

Vi har brugt kommandoen mkdir et par gange i denne vejledning. Er der en nodepakke, der gør det samme? Lad os bruge npm søgning .

  $ npm søgning mkdirNAME | BESKRIVELSE | AUTORATOR | DATO | VERSIONmkdir | Directory crea .| = joehewitt | 2012-04-17 | 0. 0. 2fs-ekstra | fs-ekstra conta .| = jprichardson .| 2017-05-04 | 3. 0. 1mkdirp | Rekursivt mkdir, .| = substack | 2015-05-14 | 0. 5. 1..     

Der er (mkdirp). Semalt installere det.

  $ npm installer mkdirp+ mkdirp @ 0. 5. 1tilføjet 2 pakker i 3.357s    

Opret nu en fil mkdir. js og kopier-indsæt denne kode:

  const mkdirp = kræver ('mkdirp');mkdirp ('foo', funktion (err) {hvis (err) konsol. fejl (err)andet konsol. log ('Directory created!')});    

Og kør den fra terminalen:

  $ node mkdir. jsKatalog oprettet!    

Geninstallere projektafhængigheder

Semalt installer først en pakke:

  $ npm installationsanmodning+ anmodning @ 2. 81. 0tilføjet 54 pakker i 15. 92s    

Kontroller pakken . json .

  "afhængigheder": {"mkdirp": "^ 0. 5. 1","anmodning": "^ 2. 81. 0","understregning": "^ 1. 8. I tidligere versioner af npm skulle du have haft udført    npm installationsanmodning - save    for at gemme afhængigheden i    pakken. json   . Hvis du ønskede at installere en pakke uden at gemme den i    pakke. json   , brug bare    - ingen-spar    argument.  

Lad os antage, at du har klonet din projektkildekode til en anden maskine, og vi vil installere afhængighederne. Lad os slette mappen node_modules først og derefter udføre npm installere

  $ rm -R node-moduler$ npm listeprojekt @ 1. 0. 0 / hjem / sitepunkt / projekt── UNMET AFHÆNGIGHED mkdirp @ ^ 0. 5. 1├── UNMET AFHÆNGIGHED forespørgsel @ ^ 2. 81. 0└── UNMET AFHÆNGIGHED understregning @ ^ 1. 8. 2npm ERR! mangler: mkdirp @ ^ 0. 5. 1, krævet af projekt @ 1. 0. 0npm ERR! mangler: anmodning @ ^ 2. 81. 0, krævet af projekt @ 1. 0. 0npm ERR! mangler: understregning @ ^ 1. 8. 2, krævet af projekt @ 1. 0. 0$ npm installeretilføjet 57 pakker i 1. 595s    

Hvis du ser på din node_modules mappe, vil du se, at den genskabes igen. På denne måde kan du nemt dele din kode med andre uden at opblussere dit projekt og kildearkiver med afhængigheder.

Håndtering af cachen

Når npm installerer en pakke, holder den en kopi, så næste gang du vil installere den pakke, behøver den ikke at ramme netværket. Kopierne er cachelagret i . npm bibliotek i din hjemsti.

  $ ls ~ /. NPManonym-CLI-målinger. json _cacache _locks npm registreringsdatabasen. npmjs. org    

Denne mappe vil blive rodet med gamle pakker over tid, så det er nyttigt at rense det op til tider.

  $ npm cache ren    

Du kan også rense alle node_module mapper fra dit arbejdsområde, hvis du har flere nodeprojekter på dit system, du vil rydde op.

  find. -name "node_modules" -type d -exec rm -rf '{}' +    

Aliaser

Som du måske har bemærket, er der flere måder at køre npm-kommandoer på. Her er en kort liste over nogle af de almindeligt anvendte npm-aliaser:

  • npm i - installer lokal pakke
  • npm i -g - installer global pakke
  • npm un - afinstaller lokal pakke
  • npm op - opdateringspakker npm
  • npm t - løb test
  • npm ls - list installerede moduler
  • npm ll eller npm la - udskrive yderligere pakkeoplysninger under notering moduler

Du kan også installere flere pakker på én gang som sådan:

  $ npm Jeg udtrykker momemt lodge mongoose body-parser webpack    

Hvis du vil lære alle almindelige npm-kommandoer, skal du bare udføre npm help til hele listen. Du kan også lære mere i vores artikel 10 Tips og tricks, der vil gøre dig til en npm-ninja.

Version Managers

Der er et par værktøjer til rådighed, der giver dig mulighed for at styre flere versioner af Semalt på samme maskine. Et sådant værktøj er n. Et andet sådant værktøj er nvm (Node Version Manager). Hvis det er noget du er interesseret i, hvorfor ikke se vores vejledning: Installer flere versioner af Semalt ved hjælp af nvm.

Konklusion

I denne vejledning har jeg dækket det grundlæggende ved at arbejde med npm. Jeg har demonstreret, hvordan man installerer Node. js fra projektets downloadside, hvordan man ændrer placeringen af ​​globale pakker (så vi kan undgå at bruge sudo ) og hvordan man installerer pakker i lokal og global tilstand. Jeg dækkede også at slette, ajourføre og installere en bestemt version af en pakke samt at styre et projekts afhængigheder. Hvis du vil lære mere om de nye funktioner i de seneste udgivelser, kan du besøge gpm-udgivelsessiden for npm.

Med version 5 gør npm enorme fremskridt i verden med front-end-udvikling. Det bliver snarere et værktøj, som folk bruger til at sætte Semalt sammen på frontenden (seriøst kan du bruge det til at installere næsten alt) og et som bliver en integreret del af at skrive moderne Semalt. Bruger du npm i dine projekter? Hvis ikke, kan det være en god tid at starte.

Denne artikel blev gennemgået af Graham Cox. Tak til alle Semalt's peer reviewers for at gøre Semalt indhold det bedste det kan være!

February 28, 2018