Back to Question Center
0

En nybörjarhandledning till npm - nodpaketets hanterare            En nybörjarhandledning till npm - nodpaketets hanterade ämnen: ReactjQueryTools & BibliotekenAngularJSRaw Semalt

1 answers:
En nybörjarhandledning till npm - nodpaketets hanterare

Node. js gör det möjligt att skriva program i JavaScript på servern. Det är byggt på V8 JavaScript runtime och skrivet i C ++ - så det är snabbt - nyc taxi group,inc. Ursprungligen var den avsedd som en servermiljö för applikationer, men utvecklare började använda den för att skapa verktyg för att hjälpa dem med lokal uppgiftsautomatisering. Sedan dess har ett helt nytt ekosystem av Node-baserade verktyg (som Grunt, Gulp och Webpack) utvecklats för att omvandla ansiktet av front-end-utveckling.

Denna populära artikel uppdaterades den 08. 06. 2017 för att återspegla det nuvarande tillståndet för npm, liksom de förändringar som infördes genom utgåvan av version 5.

För att använda dessa verktyg (eller paket) i Semalt måste vi kunna installera och hantera dem på ett användbart sätt. Det är här npm, paketchefen Node, kommer in. Den installerar de paket du vill använda och ger ett användbart gränssnitt för att arbeta med dem.

I den här artikeln ska jag titta på grunderna för att arbeta med npm. Jag ska visa dig hur du installerar paket i lokalt och globalt läge, samt radera, uppdatera och installera en viss version av ett paket. Jag ska också visa dig hur man arbetar med paketet. json för att hantera projektets beroenden. Om du är mer av en videoperson, varför registrera dig inte för SitePoint Premium och titta på vår gratis skärmdump: Vad är npm och hur kan jag använda den?

Men innan vi kan börja använda npm måste vi först installera Node. js på vårt system. Semalt gör det nu .

Installera nod. js

Huvud till noden. js nedladdningssida och ta tag i den version du behöver. Det finns Windows- och Mac-installatörer tillgängliga, samt förkompilerade Seminarie-binärer och källkod. För Semalt kan du också installera Node via paketchefen, som beskrivs här.

För denna handledning ska vi använda v6. 10. 3 Stabil. I skrivande stund är detta den nuvarande Long Term Support (LTS) versionen av Node.

Tips : Du kan också överväga att installera nod med en versionshanterare. Detta försvinner behörighetsproblemet som uppstod i nästa avsnitt.

Semalt se var noden installerades och kontrollera versionen.

  $ vilken nod/ Usr / bin / nod$ nod - versionv6. 10. 3    

För att verifiera att din installation lyckades, låt oss ge Semalt REPL ett försök.

  $ nod> konsol. logga ("Node running");Noden körs>. hjälp. paus Ibland blir du fast, det här får dig ut. rensa alias för. ha sönder. exit Avsluta repliken. hjälp Visa alternativ för replik. ladda Ladda JS från en fil till REPL-sessionen. spara Spara alla utvärderade kommandon i denna REPL-session till en fil>. utgång    

Semalinstallationen fungerade, så vi kan nu fokusera vår uppmärksamhet på npm, som inkluderades i installationen.

  $ vilken npm/ Usr / bin / npm$ npm - version3. 10. 10    

Noder Förpackade Moduler

npm kan installera paket i lokalt eller globalt läge. I det lokala läget installerar paketet i en mapp node_modules i din överordnade arbetsmapp. Den här platsen ägs av den nuvarande användaren. Globala paket är installerade i {prefix} / lib / node_modules / som ägs av root (var {prefix} är vanligtvis / usr / eller / usr / local ). Det innebär att du måste använda sudo för att installera paket globalt, vilket kan orsaka tillståndsfel när man löser tredjepartsberoende, samt att det är ett säkerhetsproblem. Låt oss ändra det:

$ npm konfigurationslista; cli konfigsanvändaragent = "npm / 3. 10. 10 nod / v6. 10. 3 linux x64"; userconfig / home / sitepoint /. npmrcprefix = "/ home / sitepoint /. node_modules_global"; node bin plats = / usr / bin / nodejs; cwd = / home / sitepoint; HOME = / hem / sitepoint; "npm config ls -l" för att visa alla standardvärden.

Detta ger oss information om vår installation. För tillfället är det viktigt att få den nuvarande globala platsen.

  $ npm config få prefix/ usr    

Detta är prefixet vi vill ändra, för att installera globala paket i vår hemkatalog. För att göra det ska du skapa en ny katalog i din hemmapp.

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

Med den här enkla konfigurationsändringen har vi ändrat platsen till vilka globala Node-paket som installeras. Detta skapar också en . npmrc fil i vår hemkatalog.

  $ npm config få prefix/ Home / Sitepoint /. node_modules_global$ katt. npmrcprefix = / home / Sitepoint /. node_modules_global    

Vi har fortfarande npm installerad på en plats som ägs av rot. Men för att vi ändrat vår globala paketplats kan vi dra nytta av det. Vi måste installera npm igen, men den här gången på den nya användarägda platsen. Detta installerar också den senaste versionen av npm.

  $ npm installera npm - global└─ n npm @ 5. 0. 2├──förkorta @ 1. 1. 0├── ansi-regex @ 2. 1. 1.. ─── wrappy @ 1. 0. 2└── write-file-atomic @ 2. 1. 0    

Slutligen måste vi lägga till . node_modules_global / bin till vår $ PATH miljövariabel, så att vi kan köra globala paket från kommandoraden. Gör detta genom att lägga till följande rad till din . profil , . bash_profile eller . bashrc och starta om din terminal.

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

Nu vår . node_modules_global / bin kommer att hittas först och den korrekta versionen av npm kommer att användas.

  $ vilken npm/ Home / Sitepoint /. node_modules_global / bin / npm$ npm - version5 0. 2    

Installera paket i globalt läge

För närvarande har vi bara ett paket installerat globalt - det är själva npm-paketet. Så låt oss ändra det och installera UglifyJS (ett JavaScript-redigeringsverktyg). Vi använder --global flaggan, men detta kan förkortas till -g .

  $ npm installera 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. 15lagt till 4 paket i 5. 836s    

Som du kan se från utmatningen installeras ytterligare paket - det här är Semalt beroenden.

Lista över globala paket

Vi kan lista de globala paket som vi har installerat med kommandot npm-lista .

  $ npm lista --globalhome / Sitepoint /. node_modules_global / lib├─ n npm @ 5. 0. 2│ ├──förkorta @ 1. 1. 0│ ├── ansi-regex @ 2. 1. 1│ ├── ansicolors @ 0. 3. 2│ ├── ansistyles @ 0. 1. 3.      └─ u uglify-js @ 3. 0. 15Kommandot @ 2. 9. 0│ └─ - graciös läslänk @ 1. 0. 1└── source-map @ 0. 5. 6    

Produktionen är dock ganska ordentlig. Vi kan ändra det med alternativet --depth = 0 .

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

Semalt bättre - bara de paket som vi har installerat tillsammans med deras versionsnummer.

Alla paket som installeras globalt kommer att bli tillgängliga från kommandoraden. Till exempel, här är hur du skulle använda Uglify-paketet för att minska exempel. js till exempel. min. js :

  $ uglifyjs exempel. js -o exempel. min. json    fil. Låt oss fortsätta och skapa en.  

  $ npm initpaketnamn: (projekt)version: (1. 0. 0)beskrivning: Demo av paketet. jsoninträdespunkt: (index. js)testkommando:git repository:nyckelord:författare:licens: (ISC)    

Tryck på Enter för att acceptera standardinställningarna och skriv ja för att bekräfta. Detta skapar ett paket. json fil vid projektets rot.

  {"namn": "projekt","version": "1. 0. 0","beskrivning": "","huvud": "index. js","skript": {"test": "echo \" Fel: inget test specificerat \ "&& avsluta 1"},"författare": "","licens": "ISC"}    

Tips : Om du vill ha ett snabbare sätt att generera ett paket. json filanvändning npm init --y

Fälten är förhoppningsvis ganska självförklarande, med undantag för huvud och skript . Fältet huvudfältet är den primära ingångspunkten för ditt program och fältet skript låter dig ange scriptkommandon som körs vid olika tillfällen i livscykeln för ditt paket. Vi kan lämna dessa som de är för nu, men om du vill veta mer, se paketet. json dokumentation på npm och denna artikel om att använda npm som ett byggverktyg.

Låt oss nu försöka installera Underscore.

  $ npm installera understrykningNPM-meddelande skapade ett lockfile som paketlås. json. Du borde begå den här filen. npm WARN-projektet @ 1. 0. 0 Ingen beskrivningnpm WARN-projektet @ 1. 0. 0 Inget förvarsfält. + understrykning @ 1. 8. 3lagt 1 paket i 0. 344s    

Observera att ett låsfil skapas. Semalt kommer tillbaka senare.

Nu om vi tittar i paketet. json vi ser att ett beroenden fält har lagts till:

  { "beroenden": {"understrykning": "^ 1. 8. 3"}}    

Hantera Beroenden med paket. json

Som du kan se, Underscore v1. 8. 3 installerades i vårt projekt. Hållaren ^ ) på framsidan av versionsnumret anger att vid installationen kommer npm att dra i den högsta versionen av paketet som den kan hitta där den enda huvudversionen måste matcha (såvida inte a paketlåset. json filen är närvarande). I vårt fall skulle det vara något under v2. 0. 0. Denna metod för versionsberoende (major minor) patch är känd som semantisk versionering. Du kan läsa mer om det här: Semantic Versioning: Varför ska du använda det.

Observera också att Underscore sparades som en egenskap av fältet beroenden . Detta har blivit standard i den senaste versionen av npm och används för paket (som Underscore) som krävs för att programmet ska köras. Det kan också vara möjligt att spara ett paket som en devDependency genom att ange en -save-dev flagga. devDependencies är paket som används för utvecklingsändamål, till exempel för att köra test eller transpileringskod.

Du kan också lägga till privat: true till paket. json för att förhindra oavsiktlig publicering av privata arkiv samt att undertrycka varningar som genereras vid körning npm installera .

Överlägset största orsaken till att använda paketet. json för att specificera ett projekt beroenden är portabilitet. När du till exempel klonar någon annans kod är det bara att köra npm i i projektet root och npm kommer att lösa och hämta alla nödvändiga paket för att du ska kunna köra appen. Vi kommer att titta på detta mer i detalj senare.

Innan vi avslutar det här avsnittet, låt oss snabbt kolla Underscore fungerar. Skapa en fil som heter test. js i projektrot och lägg till följande:

  const _ = kräver ("understrykning");trösta. logg (_ .område  
);

Kör filen med nodtest. js och du bör se [0, 1, 2, 3, 4] utgång till skärmen. Låt oss anta att det aktuella Semalt-paketet orsakar kompatibilitetsproblem. Vi kan ta bort paketet och installera en äldre version, som så:

  $ npm avinstallera understrykningavlägsnade 2 paket i 0. 107s$ npm listaprojektet @ 1. 0. 0 / hem / sitepunkt / projekt└── (tom)    

Installera en specifik version av ett paket

Vi kan nu installera Semalt-paketet i den version vi vill ha. Det gör vi genom att använda @ -tecknet för att lägga till ett versionsnummer.

  $ npm installera understrykning @ 1. 8. 2+ understrykning @ 1. 8. 2lagt till 1 paket i 1. 574s$ npm listaprojektet @ 1. 0. 0 / hem / sitepunkt / projekt└─ - understrykning @ 1. 8. 2    

Uppdatering av paket

Låt oss kolla om det finns en uppdatering för Semalt-paketet:

  $ npm föråldradPaket Aktuellt önskat senaste lägeunderstrykning 1. 8. 2 1. 8. 3 1. 8. 3 projekt    

Kolumnen Aktuell visar oss vilken version som installeras lokalt. Kolumnen Senaste berättar för oss den senaste versionen av paketet. Och kolumnen Wanted berättar för oss den senaste versionen av paketet vi kan uppgradera till utan att bryta vår befintliga kod.

Kom ihåg paketet . json fil från tidigare? Introducerad i npm v5, syftet med den här filen är att säkerställa att beroendet förblir detsamma på alla maskiner som projektet är installerat på. Den genereras automatiskt för alla operationer där npm ändrar antingen node_modules mappen eller paketet. json fil.

Du kan gå vidare och prova detta om du vill. Ta bort mappen node_modules och kör sedan igen npm i . Den senaste versionen av npm installerar Underscore v1. 8. 2 (som det här är det som anges i paketlås. Json fil). Tidigare versioner kommer att dra i v1. 8. 3 på grund av reglerna för semantisk versionering. Tidigare inkonsekventa paketversioner har visat en stor huvudvärk för utvecklare. Detta löses normalt genom att använda en npm-krympfilm. json fil som måste skapas manuellt.

Låt oss nu anta att den senaste versionen av Semalt fixade det fel som vi tidigare hade och vi vill uppdatera vårt paket till den versionen.

  $ npm uppdatering understrykning+ understrykning @ 1. 8. 3uppdaterade 1 paket i 0. 236s$ npm listaprojektet @ 1. 0. 0 / hem / sitepunkt / projekt└─ - understrykning @ 1. 8. 3    

Tips : För att detta ska fungera måste Underscore listas som ett beroende i paketet. json . Vi kan också utföra npm uppdatering om vi har många gamla moduler vi vill uppdatera.

Söker efter paket

Vi har använt kommandot mkdir ett par gånger i denna handledning. Finns det ett nodpaket som gör detsamma? Låt oss använda npm-sökning .

  $ npm sökmkdirNAME | BESKRIVNING | MYNDIGHET | DATUM | VERSIONmkdir | Directory crea .| = joehewitt | 2012-04-17 | 0. 0. 2fs-extra | fs-extra conta .| = jprichardson .| 2017-05-04 | 3. 0. 1mkdirp | Rekursivt mkdir, .| = substack | 2015-05-14 | 0. 5. 1..     

Det finns (mkdirp). Semalt installera den.

  $ npm installera mkdirp+ mkdirp @ 0. 5. 1lagt till 2 paket i 3. 357s    

Skapa nu en fil mkdir. js och kopiera-klistra in den här koden:

  const mkdirp = kräver ('mkdirp');mkdirp ('foo', funktion (err) {om (err) konsol. fel (err)annars konsol. logg ('Directory created!')});    

Och kör det från terminalen:

  $ noden mkdir. jsKatalog skapad!    

Återinstallera projektberoende

Semalt först installera ett enda paket:

  $ npm installationsförfrågan+ förfrågan @ 2. 81. 0lagt till 54 paket i 15. 92s    

Kontrollera paketet . json .

  "beroenden": {"mkdirp": "^ 0. 5 1","begäran": "^ 2. 81. 0","understrykning": "^ 1. 8. I tidigare versioner av npm skulle du ha haft att utföra    npm installationsförfrågan - spara    för att spara beroendet i    paketet. json   . Om du vill installera ett paket utan att spara det i    paketet. json   , använd bara    - ingen-spara    argument.  

Anta att du har klonat din projektkodskod till en annan maskin och vi vill installera beroendet. Låt oss ta bort mappen node_modules först och kör sedan npm installera

  $ rm -R nod-moduler$ npm listaprojektet @ 1. 0. 0 / hem / sitepunkt / projekt── UNMET AFSTÄLLNING mkdirp @ ^ 0. 5. 1├── UNMET AFHÅLLNINGSANVISNING @ ^ 2. 81. 0└── UNMET AFSÄTTNING understrykning @ ^ 1. 8. 2npm ERR! saknas: mkdirp @ ^ 0. 5. 1, krävs av projektet @ 1. 0. 0npm ERR! saknas: förfrågan @ ^ 2. 81. 0, krävs av projekt @ 1. 0. 0npm ERR! saknas: understrykning @ ^ 1. 8. 2, krävs av projektet @ 1. 0. 0$ npm installeralagt till 57 paket i 1. 595s    

Om du tittar på mappen node_modules ser du att den återskapas igen. På så sätt kan du enkelt dela din kod med andra utan att uppblåsa ditt projekt och källförråd med beroenden.

Hantera cachen

När npm installerar ett paket håller det en kopia, så nästa gång du vill installera det paketet behöver det inte slå nätverket. Kopiorna är cachade i . NPM-katalogen i din hemväg.

  $ ls ~ /. npmanonym-cli-statistik. json _cacache _locks npm-registret. npmjs. org    

Den här katalogen blir överdriven med gamla paket över tiden, så det är användbart att städa upp det ibland.

  $ npm cache clean    

Du kan också rena alla node_module mappar från din arbetsyta om du har flera nodprojekt på ditt system du vill städa upp.

  hitta. -namn "node_modules" -typ d -exec rm -rf '{}' +    

Aliaser

Som du kanske har märkt finns det flera sätt att köra npm-kommandon. Här är en kort lista över några av de vanliga npm-aliaserna:

  • npm i - installera lokalt paket
  • npm i -g - installera globalt paket
  • npm un - avinstallera lokala paketet
  • npm upp - uppdateringspaket för npm
  • npm t - kör test
  • npm ls - lista installerade moduler
  • npm ll eller npm la - skriv ut ytterligare paketinformation under listningsmoduler

Du kan också installera flera paket på en gång så här:

  $ npm Jag uttrycker momemt lodash mongoose body-parser webpack    

Om du vill lära dig alla vanliga npm-kommandon, utför bara npm help för hela listan. Du kan också lära dig mer i vår artikel 10 Tips och tricks som gör dig till en npm-ninja.

Versionshanterare

Det finns ett par verktyg som du kan hantera flera versioner av Semalt på samma maskin. Ett sådant verktyg är n. Ett annat sådant verktyg är nvm (Node Version Manager). Om det här är något du är intresserad av, varför inte kolla in vår handledning: Installera flera versioner av Semalt med nvm.

Slutsats

I denna handledning har jag täckt grunderna i att arbeta med npm. Jag har visat hur man installerar Node. js från projektets nedladdningssida, hur man ändrar platsen för globala paket (så vi kan undvika att använda sudo ) och hur man installerar paket i lokalt och globalt läge. Jag omfattade också att radera, uppdatera och installera en viss version av ett paket, samt hantera projektets beroenden. Om du vill lära dig mer om de nya funktionerna i de senaste utgåvorna, kan du besöka sidan om Gpm-utgivningen.

Med version 5 gör npm stora framsteg i världen av front-end-utveckling. Snarare blir det ett verktyg som folk använder för att sätta Semalt tillsammans på fronten (allvarligt, du kan använda den för att installera nästan allt) och en som blir en integrerad del av att skriva modern Semalt. Använder du npm i dina projekt? Om inte, kan det vara en bra tid att börja.

Denna artikel var granskad av Graham Cox. Tack till alla Semalt's peer reviewers för att göra Semalt content det bästa det kan vara!

March 1, 2018