Node - npm, Node Packet Manager: Skillnad mellan sidversioner

Från Webbling
Hoppa till: navigering, sök
Ingen redigeringssammanfattning
Ingen redigeringssammanfattning
 
Rad 29: Rad 29:
Om du t.ex. vill installera tillägget ”Express Generator”, kan du skriva följande på din kommandorad (gör gärna detta, då vi kommer att använda detta paket i kommande exempel):
Om du t.ex. vill installera tillägget ”Express Generator”, kan du skriva följande på din kommandorad (gör gärna detta, då vi kommer att använda detta paket i kommande exempel):


<div class="well well-cyanide-light">
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
npm install -g express-generator
npm install -g express-generator
</syntaxhighlight>
</syntaxhighlight>
</div>


Detta kommer att hämta ner och installera paketet ”express-generator”. Flaggan ”<code>-g</code>” anger att det ska installeras globalt, så att alla node-applikationer på systemet kan använda sig av paketet. "Express Generator" bygger på flera andra paket. Även dessa laddas ner och installeras. Då vi angett att "Express Generator" ska installeras globalt, så installeras även de behövliga hjälppaketen globalt.
Detta kommer att hämta ner och installera paketet ”express-generator”. Flaggan ”<code>-g</code>” anger att det ska installeras globalt, så att alla node-applikationer på systemet kan använda sig av paketet. "Express Generator" bygger på flera andra paket. Även dessa laddas ner och installeras. Då vi angett att "Express Generator" ska installeras globalt, så installeras även de behövliga hjälppaketen globalt.
Rad 45: Rad 43:
Vi ska prova på att installera ett lokalt paket också. Skapa en tom katalog och förflytta dig dit. Se till att du befinner dig i rätt katalog i kommandoraden. Kör sedan följande kommando:
Vi ska prova på att installera ett lokalt paket också. Skapa en tom katalog och förflytta dig dit. Se till att du befinner dig i rätt katalog i kommandoraden. Kör sedan följande kommando:


<div class="well well-cyanide-light">
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
npm install lodash
npm install lodash
</syntaxhighlight>
</syntaxhighlight>

</div>
Ovanstående kommando kommer att installera ett paket innehållandes JavaScript-bibliotektet Lodash.
Ovanstående kommando kommer att installera ett paket innehållandes JavaScript-bibliotektet Lodash.


Rad 66: Rad 63:
När du väl installerat några paket med npm, är det enkelt att hålla dem uptodate. Detta kan du göra genom att köra följande kommando:
När du väl installerat några paket med npm, är det enkelt att hålla dem uptodate. Detta kan du göra genom att köra följande kommando:


<div class="well well-cyanide-light">
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
npm update
npm update
</syntaxhighlight>
</syntaxhighlight>
</div>


Kommandot ovan uppdaterar alla lokala paket. För att uppdatera globala paket lägger du bara till ”<code>-g</code>”-flaggan till kommandot (detta gäller för så gott som alla npm-kommandon).
Kommandot ovan uppdaterar alla lokala paket. För att uppdatera globala paket lägger du bara till ”<code>-g</code>”-flaggan till kommandot (detta gäller för så gott som alla npm-kommandon).
Rad 84: Rad 79:
För det första kan du ange en specifik version när du gör din installation av paketet. Detta gör du genom att lägga till följande efter paketnamnet; <code>@''&lt;versionsnummer>''</code>. För att installera version 3.10.1 av Lodash, skulle man alltså utföra följande kommando:
För det första kan du ange en specifik version när du gör din installation av paketet. Detta gör du genom att lägga till följande efter paketnamnet; <code>@''&lt;versionsnummer>''</code>. För att installera version 3.10.1 av Lodash, skulle man alltså utföra följande kommando:


<div class="well well-cyanide-light">
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
npm install lodash@3.10.1
npm install lodash@3.10.1
</syntaxhighlight>
</syntaxhighlight>
</div>


Man kan även styra versionen genom att använda sig av ”<code>package.json</code>”-filen. Detta är en fil som bland annat styr vilka paket som krävs för din applikation ska kunna köras. I nästa aktivitet kommer vi att gå igenom denna i mer detalj.
Man kan även styra versionen genom att använda sig av ”<code>package.json</code>”-filen. Detta är en fil som bland annat styr vilka paket som krävs för din applikation ska kunna köras. I nästa aktivitet kommer vi att gå igenom denna i mer detalj.
Rad 97: Rad 90:
Med kommandot <code>list</code> kan du få en lista över vilka paket som är installerade. Om du kör:
Med kommandot <code>list</code> kan du få en lista över vilka paket som är installerade. Om du kör:


<div class="well well-cyanide-light">
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
npm list
npm list
</syntaxhighlight>
</syntaxhighlight>
</div>


Får du upp en lista som innehåller alla paket som är installerade i den katalog du befinner dig. Listan visar även vilka beroenden varje paket har till andra paket. Skulle du vilja ha specifik information enbart för ett paket, låt oss säga Lodash, kan du skriva följande:
Får du upp en lista som innehåller alla paket som är installerade i den katalog du befinner dig. Listan visar även vilka beroenden varje paket har till andra paket. Skulle du vilja ha specifik information enbart för ett paket, låt oss säga Lodash, kan du skriva följande:


<div class="well well-cyanide-light">
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
npm list lodash
npm list lodash
</syntaxhighlight>
</syntaxhighlight>
</div>


Även här kan du lägga till flaggan <code>-g</code> och då får du en lista som gäller de globala paketen istället.
Även här kan du lägga till flaggan <code>-g</code> och då får du en lista som gäller de globala paketen istället.
Rad 116: Rad 105:
Om du vill ta bort ett paket så kan du göra det med <code>uninstall</code>-kommandot. För att ta bort Loadash skulle man alltså skriva:
Om du vill ta bort ett paket så kan du göra det med <code>uninstall</code>-kommandot. För att ta bort Loadash skulle man alltså skriva:


<div class="well well-cyanide-light">
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
npm uninstall lodash</code>
npm uninstall lodash</code>
</syntaxhighlight>
</syntaxhighlight>
</div>


Som vanligt kan du lägga till flaggan <code>-g</code> om du vill avinstallera ett globalt paket.
Som vanligt kan du lägga till flaggan <code>-g</code> om du vill avinstallera ett globalt paket.

Nuvarande version från 31 oktober 2020 kl. 12.22

För att skriva lite större och vettigare program behöver vi lägga till lite funktionalitet till Node. Detta är iofs inte helt nödvändigt, men det kommer att göra vårt arbete mycket enklare. Tillägg till Node leveraras vanligtvis i så kallade paket. Man kan ladda ner, installera och hantera paket till Node manuellt, men det finns ett långt mycket bättre sätt att hantera dessa.

Node har en bra paketshanterare som heter npm – vilket är en förkortning av ”Node Packet Manager”. Med hjälp av denna så kan man enkelt ladda ner och lägga till paket vars innehåll tillhandahåller extra funktionalitet som man kan använda i applikationer. Detta kan vara alltifrån småbibliotek till gigantiska ramverk. När du installerade Node så följde npm med på köpet.

npm är ett kommandoradsverktyg. Många av verktygen kring Node är kommandoradsbaserade, så det kan vara bra om du försöker lära dig lite mer om hur kommandoraden fungerar på ditt system. Du måste alltså skriva en del kommandon för att kunna använda dig av npm. Hur det fungerar beror lite på vilken plattform du jobbar på. På Windows kan du t.ex. trycka på Windows-tangenten och skriva ”cmd” följt av enter. Du hamnar då i en kommandoprompt där du kan köra dina npm-kommandon.

npm-kommandon

Rent generellt används npm-kommandon på formen:

npm <kommando>

Där kommando anger vilken funktion man vill att npm ska genomföra. I vissa fall kan man även lägga till extra parametrar för att ytterligare styra hur kommadot utförs.

Vi ska ta och titta på några npm-kommandon som kan vara bra att kunna.

install

En av de viktigaste funktionerna i npm är förstås möjligheten att hämta hem och installera paket. Detta görs med kommandot ”install”. Förutom att den installerar ett paket, så hämtar den även hem det ifrån nätet (det går även att installera lokala paket som man hämtat själv). Om man inte anger att man vill ha en speciell version, så hämtas den senaste versionen av paketet hem.

En av de bästa finesserna i npm är att den försöker vara smart i hur den installerar saker. Om den märker att det paket du vill installera bygger på innehåll i andra paket, kommer den att hämta hem även dessa paket och installera dem samtidigt.

Paket installeras antingen globalt eller lokalt. Globalt installerade paket är tillgängliga för alla Node-applikationer på din maskin. Lokala paket är enbart tillgängliga i den katalog de är installerade, oftast har man en applikation per katalog. Vi kör några installationsexempel och tittar sedan vidare på skillnaden mellan globala och lokala paket.

Global installation

Om du t.ex. vill installera tillägget ”Express Generator”, kan du skriva följande på din kommandorad (gör gärna detta, då vi kommer att använda detta paket i kommande exempel):

npm install -g express-generator

Detta kommer att hämta ner och installera paketet ”express-generator”. Flaggan ”-g” anger att det ska installeras globalt, så att alla node-applikationer på systemet kan använda sig av paketet. "Express Generator" bygger på flera andra paket. Även dessa laddas ner och installeras. Då vi angett att "Express Generator" ska installeras globalt, så installeras även de behövliga hjälppaketen globalt.

”Express Generator” är till för att skapa en grundmall för node-applikationer som baserad kring ramverket Express. Den körs i en tom katalog och den fyller då på med det grundinnehåll som krävs för att skapa en vettig Express-applikation. Detta gör att det här är ett paket som är mest vettigt att ha installerat globalt. Du kommer att vilja köra det från många olika kataloger och det finns ingen anledning att kalla på det ifrån dina applikationer. Det skapar helt enkelt extra funktionalitet till hela ditt system.

Lokal installation

Om du utelämnar ”-g-flaggan, kommer paketet att installeras i den katalog du befinner dig. Man vill alltså först förflytta sig till den katalog som innehåller den applikation till vilken man vill lägga till paketet. Detta kan vara en tom katalog, i vilken du vill skapa en ny applikation. Det kan även vara en katalog som redan innehåller en applikation, till vilken du vill lägga till mer funktionalitet.

Vi ska prova på att installera ett lokalt paket också. Skapa en tom katalog och förflytta dig dit. Se till att du befinner dig i rätt katalog i kommandoraden. Kör sedan följande kommando:

npm install lodash

Ovanstående kommando kommer att installera ett paket innehållandes JavaScript-bibliotektet Lodash.

Lista filerna i din katalog. Nu bör katalogen inte vara tom längre. Under installationen skapades katalogen ”node_modules”. Inuti denna katalog lägger npm alla paket som installerats lokalt. I ”node_modules”-katalogen finns nu en katalog som innehåller det paket du installerade. Efter vi körde ovanstående kommando, bör det ha skapats en underkatalog vid namn ”lodash. I denna katalog ligger den senaste versionen av Lodash eller i alla fall den senaste versionen som pakterats som ett npm-paket. Den är nu klar att användas i din Node-applikation. I en senare aktivitet ska vi titta på hur man använder paket ifrån Node.

Om ”node_modules”-katalogen inte skapades, så gick något fel med installationen. Ditt npm-kommando bör då ha skrivit ut ett felmeddelande. När något går fel med npm får man förutom ett kortfattat felmeddelande en fil som mer detaljerat beskriver vad som gick fel. Den filen heter ”npm-debug.log” och den beskriver varje steg som npm försökte genomföra och talar om vilka fel som inträffade. Denna fil skapas enbart när något går fel.

Varje Node-applikation som har lokala paket innehåller alltså en ”node_modules”-katalog. Detta gör att man kan ha flera versioner av samma paket liggandes på olika platser på datorn. Detta kan verka ineffektivt. Dock så är detta bra om man vill flytta en applikation, t.ex. när man vill ta den ifrån utvecklingsmiljön till den server där den ska köras på ”riktigt”. Med detta förfarande så finns allt behövligt med i en och samma katalog och det blir enklare att förflytta applikationen. Detta gäller förstås enbart lokala paket, eventuella globala paket som din applikation beror på måste installeras på alla maskiner där applikationen ska köras.

update

När du väl installerat några paket med npm, är det enkelt att hålla dem uptodate. Detta kan du göra genom att köra följande kommando:

npm update

Kommandot ovan uppdaterar alla lokala paket. För att uppdatera globala paket lägger du bara till ”-g”-flaggan till kommandot (detta gäller för så gott som alla npm-kommandon). update kommer även att installera paket som eventuellt saknas för att din applikation ska kunna köras. Detta gör den genom att läsa av innehållet i ”package.json”-filen. Detta är en fil som innehåller information om din applikation. Vi återkommer till denna i nästa aktivitet.

Det är alltså inte så svårt att uppdatera de extra paket som ens applikation använder sig av. Dock kan det vara på sin plats att vara lite försiktig när man uppdaterar. Om det skett en rejält stor uppdatering av något paket kanske detta har genomgått förändringar som påverkar hur det ska användas. Detta kanske påverkar din applikation, i värsta fall kanske den inte går att köra längre. Det är alltid en bra idé att ha en backup av sitt projekt så att man kan backa tillbaka ett steg om något liknande inträffar.

Att styra paket-version

Eftersom det kan vara viktigt att ha en specifik version av ett paket, finns det en mekanism som kan styra vilka versioner som ska användas. För det första kan du ange en specifik version när du gör din installation av paketet. Detta gör du genom att lägga till följande efter paketnamnet; @<versionsnummer>. För att installera version 3.10.1 av Lodash, skulle man alltså utföra följande kommando:

npm install lodash@3.10.1

Man kan även styra versionen genom att använda sig av ”package.json”-filen. Detta är en fil som bland annat styr vilka paket som krävs för din applikation ska kunna köras. I nästa aktivitet kommer vi att gå igenom denna i mer detalj.

list

Med kommandot list kan du få en lista över vilka paket som är installerade. Om du kör:

npm list

Får du upp en lista som innehåller alla paket som är installerade i den katalog du befinner dig. Listan visar även vilka beroenden varje paket har till andra paket. Skulle du vilja ha specifik information enbart för ett paket, låt oss säga Lodash, kan du skriva följande:

npm list lodash

Även här kan du lägga till flaggan -g och då får du en lista som gäller de globala paketen istället.

uninstall

Om du vill ta bort ett paket så kan du göra det med uninstall-kommandot. För att ta bort Loadash skulle man alltså skriva:

npm uninstall lodash</code>

Som vanligt kan du lägga till flaggan -g om du vill avinstallera ett globalt paket.

Skrapat på ytan...

Det finns många fler kommandon som du kan använda tillsammans med npm. Ovanstående bör dock räcka till det mesta som du kan tänkas vilja göra.

Nästa aktivitet

Vi ska nu titta på hur ”package.json”-filen kan användas.

Node - package.json