Node - package.json: Skillnad mellan sidversioner

Från Webbling
Hoppa till: navigering, sök
Ingen redigeringssammanfattning
Ingen redigeringssammanfattning
 
(16 mellanliggande sidversioner av samma användare visas inte)
Rad 1: Rad 1:
För att lättare kunna paketera Node-program kan man skapa en standardfil som innehåller information om applikationen. Detta är filen <code>package.json</code>.
För att lättare kunna hantera Node-program kan man skapa en standardfil som innehåller information om applikationen. Detta är filen <code>package.json</code>. Informationen i denna fil tjänar även som grund om man vill paketera sitt eget program som ett npm-paket.


Filen innehåller värden som anger saker som namn, version, beskrivning, programmerare/författare samt vilka NPM-moduler som krävs för att köra paketet. Dessa saker anges som en JSON-struktur i filen. Vi ska gå igenom några av de saker som man kan ange i denna fil. (Prova gärna [http://browsenpm.org/package.json http://browsenpm.org/package.json] som interaktivt visar upp vad som kan ingå i en <code>package.json</code>-filen.)
Filen innehåller värden som anger saker som namn, version, beskrivning, programmerare/författare samt vilka npm-moduler som krävs för att köra paketet. Dessa saker anges som en JSON-struktur i filen. Vi ska gå igenom några av de saker som man kan ange i denna fil. (Prova gärna [http://browsenpm.org/package.json http://browsenpm.org/package.json] som interaktivt visar upp vad som kan ingå i en <code>package.json</code>-fil.)


== Att skapa en <code>package.json</code>-fil ==
Om du behöver skapa en <code>package.json</code>-fil ifrån scratch så gör du det enklast via npm. Kör följande kommando:
<syntaxhighlight lang="javascript">
npm init
</syntaxhighlight>
npm kommer att ställa en massa frågor. Svaren på dessa kommer att användas till grundinställningarna för din <code>package.json</code>-fil.
== En minimal <code>package.json</code> ==
En minimal <code>package.json</code> som skapats av ”Express Generator” ser ut ungefär så här:
En minimal <code>package.json</code> som skapats av ”Express Generator” ser ut ungefär så här:
<syntaxhighlight lang="javascript">
{
{
   "name": "NodeTest",
   "name": "NodeTest",
Rad 21: Rad 33:
   }
   }
}
}
</syntaxhighlight>
Låt oss gå igenom vad filen innehåller…
Låt oss gå igenom vad filen innehåller…
Först ut har vi <code>name</code>. Detta värde bestämmer vilket namn vår applikation ska ha. Detta är en obligatorisk parameter och namnet ska anges gement (dvs, i små bokstäver).
 
Därefter följer <code>version</code>, som förstås anger vilken version denna fil handlar om. Detta ska anges med tre tal, åtskilda med punkter. De tre talen är:
=== Paketinformation och metadata ===
# Större version. API:et har ändrats det inte är bakåtkompatibelt
De första värdena anger information om paketet såsom <code>package.json</code> filen beskriver. Detta kan antingen vara en applikation,  ett bibliotek eller liknande. Detta är metadata, dvs data som beskriver den data som finns med i paketet.
 
Följande sätts här:
==== <code>name</code> ====
Först ut har vi <code>name</code>. Detta värde bestämmer vilket namn vår applikation ska ha. Detta är en obligatorisk parameter och namnet ska anges gement (dvs, med små bokstäver).
 
==== <code>version</code> ====
Därefter följer <code>version</code>, som anger vilken version av paketet denna fil handlar om.  
 
Versionsinformationen ska anges med tre tal, åtskilda med punkter. De tre talen är:
# Större version. API:et har ändrats och det är inte längre bakåtkompatibelt med äldre versioner
# Mindre version. Funktionalitet har lagts till, men det är bakåtkompatibelt.
# Mindre version. Funktionalitet har lagts till, men det är bakåtkompatibelt.
# Patch. Små, bakåtkompatibla buggfixar.
# Patch. Små, bakåtkompatibla buggfixar.
<code>private</code> anger om detta är ett paket som ska delas till andra eller ej. Om det är satt till <code>false</code> kommer NPM att tycka att det ska publiceras till allmänheten. I de flesta fall vill vi inte detta, speciellt inte så länge vi håller på och utvecklar koden.
 
Man skulle även kunna tänka sig att ha några till värden här i början. Dels finns <code>description</code>, som är en kort och koncis beskrivning av vad paketet är till för. Vi kan även ange vem som är huvudprogrammeraren för paketet genom att ange <code>author</code>. Här anger man namn namnet följt av mailadressen, t.ex.:
==== <code>private</code> ====
<code>”author”: ”Patrik Grip-Jansson <pgj@gnulix.org>”</code>
<code>private</code> anger om detta är ett paket som ska delas till andra eller ej. Om det är satt till <code>false</code> kommer npm att tycka att det ska publiceras till allmänheten. I de flesta fall vill vi inte detta, speciellt inte så länge vi håller på och utvecklar koden.
 
=== Ytterligare metadata ===
Det finns även ett par till metainformationsvärden som kan vara av intresse. Dessa är:
 
==== <code>description</code> ====
<code>description</code> är en kort och koncis beskrivning av vad paketet är till för. Om du vill ha mer omfattande beskrivning, dokumentation, osv så passar det bättre i någon annan fil. Kanske en readme-fil eller liknande. Publicerar du ditt paket, kommer du säkert att vilja ha en separat fil eller webbsida som mer ingående beskriver ditt paket.
 
==== <code>author</code> ====
Vi kan även ange vem som är skapare och huvudsaklig utvecklare och som ansvarar för paketet. Det gör vi genom att ange <code>author</code>. Här anger man persones namn följt av dennes mailadress, t.ex.:
 
<syntaxhighlight lang="javascript">
”author”: ”Patrik Grip-Jansson <pgj@gnulix.org>”
</syntaxhighlight>
 
==== <code>contributors</code> ====
Man kan även ange vilka som varit med och bidragit till koden. Det gör man med <code>contributors</code>. Denna består av en array med namn och mailadresser för alla medhjälpare. Så här kan den se ut:
Man kan även ange vilka som varit med och bidragit till koden. Det gör man med <code>contributors</code>. Denna består av en array med namn och mailadresser för alla medhjälpare. Så här kan den se ut:
<code>
 
<syntaxhighlight lang="javascript">
”contributors” : [{ ”name” : ”Nisse Motlut”, ”email” : ”nm@example.com”}]
”contributors” : [{ ”name” : ”Nisse Motlut”, ”email” : ”nm@example.com”}]
</code>
</syntaxhighlight>
Med värdet <code>script</code> kan man ange en lista över kommandon som ska kunna köras av NPM. Dessa startas genom att man kör:
 
<code>npm run ''<kommando>''</code>
=== Custom NPM-kommandon ===
I vårt fall skapas alltså kommandot <code>start</code> och när man exekverar det så kommer Node att starta igång och köra vår applikation.
Med värdet <code>script</code> kan man ange en lista med custom kommandon som ska kunna köras av npm. Dessa startas genom att man kör:
Sist i vår exempelfil följer en lista på de paket som behövs för att kunna köra vår applikation. För dessa värden anges först paketnamnet, därefter paketversionen. Genom att ange en version, så kan man tala om vilken version av ett paket som man vet fungerar med ens applikation. Man kan visserligen fylla i detta själv. Men det brukar vara bättre att låta NPM sköta det åt en. Det kan man göra genom att ge en extra flagga när man installerar ett paket. Så här kan det se ut om vi vill ange att vår applikation kräver Lodash:
 
<code>npm install lodash –save</code>
<syntaxhighlight lang="javascript" line>
npm run ''<kommando>''
</syntaxhighlight>
 
I vårt fall skapas alltså kommandot <code>start</code> och när man exekverar detta så kommer Node att starta igång och köra vår applikation.
 
=== Beroenden (dependencies) ===
Sist i vår exempelfil följer en lista på de paket som behövs för att kunna köra vår applikation. För dessa värden anges först paketnamnet, därefter paketversionen.
 
Genom att ange en version, så kan man tala om vilken version av ett paket som man vet fungerar med ens applikation. Man kan visserligen fylla i detta själv. Men det brukar vara bättre att låta npm sköta det åt en. Det kan man göra genom att ange en extra flagga när man installerar ett paket. Så här kan det se ut om vi vill ange att vår applikation kräver Lodash:
 
<syntaxhighlight lang="javascript" line>
npm install lodash --save
</syntaxhighlight>
 
Ovanstående kommer att lägga till senaste versionen av lodash till din applikation. npm kommer även att lägga till en rad i <code>package.json</code>-filen. Den kommer att tala om att lodsh behövs samt vilken version som är rätt (detta sätts till den senaste versionen i vårt fall). Detta är det enklaste sättet att lägga till beroenden.
 
== Ett bra urval ==
Det finns långt mycket mer man kan använda i sin <code>package.json</code>-fil. Men detta är ett bra urval som bör räcka till i de allra flesta fallen.


Ovanstående kommer att lägga till lodash med den senaste versionen angiven i din <code>package.json</code>-fil. Detta är det enklaste sättet att lägga till beroenden.
Titta gärna runt på <code>package.json</code> i några olika paket så att du får en känsla för hur filen används i olika projekt.
Det finns långt mycket mer man kan använda i sin <code>package.json</code>-fil. Men detta bör räcka till i de allra flesta fallen.


== Nästa aktivitet ==
== Nästa aktivitet ==
Nu har vi fått en hel del mer på fötterna och vi ska skapa en lite mer omfattande Node-applikation.
Nu har vi fått en hel del mer på fötterna och vi ska skapa en lite mer omfattande Node-applikation.


[[En första serverapplikation med Node]]
[[Node - en första serverapplikation]]


[[Category: Node]]
[[Category: Node|N4]]

Nuvarande version från 31 oktober 2020 kl. 14.23

För att lättare kunna hantera Node-program kan man skapa en standardfil som innehåller information om applikationen. Detta är filen package.json. Informationen i denna fil tjänar även som grund om man vill paketera sitt eget program som ett npm-paket.

Filen innehåller värden som anger saker som namn, version, beskrivning, programmerare/författare samt vilka npm-moduler som krävs för att köra paketet. Dessa saker anges som en JSON-struktur i filen. Vi ska gå igenom några av de saker som man kan ange i denna fil. (Prova gärna http://browsenpm.org/package.json som interaktivt visar upp vad som kan ingå i en package.json-fil.)

Att skapa en package.json-fil

Om du behöver skapa en package.json-fil ifrån scratch så gör du det enklast via npm. Kör följande kommando:

npm init

npm kommer att ställa en massa frågor. Svaren på dessa kommer att användas till grundinställningarna för din package.json-fil.

En minimal package.json

En minimal package.json som skapats av ”Express Generator” ser ut ungefär så här:

{
  "name": "NodeTest",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "body-parser": "~1.13.2",
    "cookie-parser": "~1.3.5",
    "debug": "~2.2.0",
    "express": "~4.13.1",
    "jade": "~1.11.0",
    "morgan": "~1.6.1",
    "serve-favicon": "~2.3.0"
  }
}

Låt oss gå igenom vad filen innehåller…

Paketinformation och metadata

De första värdena anger information om paketet såsom package.json filen beskriver. Detta kan antingen vara en applikation, ett bibliotek eller liknande. Detta är metadata, dvs data som beskriver den data som finns med i paketet.

Följande sätts här:

name

Först ut har vi name. Detta värde bestämmer vilket namn vår applikation ska ha. Detta är en obligatorisk parameter och namnet ska anges gement (dvs, med små bokstäver).

version

Därefter följer version, som anger vilken version av paketet denna fil handlar om.

Versionsinformationen ska anges med tre tal, åtskilda med punkter. De tre talen är:

  1. Större version. API:et har ändrats och det är inte längre bakåtkompatibelt med äldre versioner
  2. Mindre version. Funktionalitet har lagts till, men det är bakåtkompatibelt.
  3. Patch. Små, bakåtkompatibla buggfixar.

private

private anger om detta är ett paket som ska delas till andra eller ej. Om det är satt till false kommer npm att tycka att det ska publiceras till allmänheten. I de flesta fall vill vi inte detta, speciellt inte så länge vi håller på och utvecklar koden.

Ytterligare metadata

Det finns även ett par till metainformationsvärden som kan vara av intresse. Dessa är:

description

description är en kort och koncis beskrivning av vad paketet är till för. Om du vill ha mer omfattande beskrivning, dokumentation, osv så passar det bättre i någon annan fil. Kanske en readme-fil eller liknande. Publicerar du ditt paket, kommer du säkert att vilja ha en separat fil eller webbsida som mer ingående beskriver ditt paket.

author

Vi kan även ange vem som är skapare och huvudsaklig utvecklare och som ansvarar för paketet. Det gör vi genom att ange author. Här anger man persones namn följt av dennes mailadress, t.ex.:

author: Patrik Grip-Jansson <pgj@gnulix.org>

contributors

Man kan även ange vilka som varit med och bidragit till koden. Det gör man med contributors. Denna består av en array med namn och mailadresser för alla medhjälpare. Så här kan den se ut:

contributors : [{ name : Nisse Motlut, email : nm@example.com}]

Custom NPM-kommandon

Med värdet script kan man ange en lista med custom kommandon som ska kunna köras av npm. Dessa startas genom att man kör:

npm run ''<kommando>''

I vårt fall skapas alltså kommandot start och när man exekverar detta så kommer Node att starta igång och köra vår applikation.

Beroenden (dependencies)

Sist i vår exempelfil följer en lista på de paket som behövs för att kunna köra vår applikation. För dessa värden anges först paketnamnet, därefter paketversionen.

Genom att ange en version, så kan man tala om vilken version av ett paket som man vet fungerar med ens applikation. Man kan visserligen fylla i detta själv. Men det brukar vara bättre att låta npm sköta det åt en. Det kan man göra genom att ange en extra flagga när man installerar ett paket. Så här kan det se ut om vi vill ange att vår applikation kräver Lodash:

npm install lodash --save

Ovanstående kommer att lägga till senaste versionen av lodash till din applikation. npm kommer även att lägga till en rad i package.json-filen. Den kommer att tala om att lodsh behövs samt vilken version som är rätt (detta sätts till den senaste versionen i vårt fall). Detta är det enklaste sättet att lägga till beroenden.

Ett bra urval

Det finns långt mycket mer man kan använda i sin package.json-fil. Men detta är ett bra urval som bör räcka till i de allra flesta fallen.

Titta gärna runt på package.json i några olika paket så att du får en känsla för hur filen används i olika projekt.

Nästa aktivitet

Nu har vi fått en hel del mer på fötterna och vi ska skapa en lite mer omfattande Node-applikation.

Node - en första serverapplikation