Node.js
package.json
Suche…
Bemerkungen
Sie können package.json
mit erstellen
npm init
was Sie über grundlegende Fakten über Ihre Projekte stellen, einschließlich Lizenz - Kennung .
Grundlegende Projektdefinition
{
"name": "my-project",
"version": "0.0.1",
"description": "This is a project.",
"author": "Someone <[email protected]>",
"contributors": [{
"name": "Someone Else",
"email": "[email protected]"
}],
"keywords": ["improves", "searching"]
}
Feld | Beschreibung |
---|---|
Name | ein erforderliches Feld für die Installation eines Pakets. Muss klein geschrieben werden, ein einzelnes Wort ohne Leerzeichen. (Bindestriche und Unterstriche erlaubt) |
Ausführung | ein erforderliches Feld für die Paketversion mit semantischer Versionierung . |
Beschreibung | eine kurze Beschreibung des Projekts |
Autor | gibt den Autor des Pakets an |
Mitwirkende | ein Array von Objekten, eines für jeden Beitragenden |
Schlüsselwörter | eine Reihe von Zeichenfolgen, dies wird den Leuten helfen, Ihr Paket zu finden |
Abhängigkeiten
"Abhängigkeiten": {"Modulname": "0.1.0"}
- genau :
0.1.0
installiert diese spezifische Version des Moduls. - neueste untergeordnete Version :
^0.1.0
installiert die neueste untergeordnete Version, beispielsweise0.2.0
, installiert jedoch kein Modul mit einer höheren Hauptversion, z. B.1.0.0
- neuester Patch :
0.1.x
oder~0.1.0
installiert die neueste verfügbare Patch-Version, z. B.0.1.4
, installiert jedoch kein Modul mit einer höheren Haupt- oder Nebenversion, z. B.0.2.0
oder1.0.0
. - Wildcard :
*
installiert die neueste Version des Moduls. - Git Repository : Folgendes wird ein Tarball aus dem Hauptzweig eines Git Repo installieren. Ein
#sha
,#tag
oder#branch
kann ebenfalls angegeben werden:- GitHub :
user/project
oderuser/project#v1.0.0
- URL :
git://gitlab.com/user/project.git
odergit://gitlab.com/user/project.git#develop
- GitHub :
- lokaler Pfad :
file:../lib/project
Nachdem Sie sie zu package.json hinzugefügt haben, verwenden Sie den Befehl npm install
in Ihrem Projektverzeichnis im Terminal.
devDependencies
"devDependencies": {
"module-name": "0.1.0"
}
Für Abhängigkeiten, die nur für die Entwicklung erforderlich sind, wie zum Beispiel das Testen von Styling-Proxies ext. Diese dev-Abhängigkeiten werden nicht installiert, wenn "npm install" im Produktionsmodus ausgeführt wird.
Skripte
Sie können Skripts definieren, die vor oder nach einem anderen Skript ausgeführt werden können oder ausgelöst werden.
{
"scripts": {
"pretest": "scripts/pretest.js",
"test": "scripts/test.js",
"posttest": "scripts/posttest.js"
}
}
In diesem Fall können Sie das Skript ausführen, indem Sie einen der folgenden Befehle ausführen:
$ npm run-script test
$ npm run test
$ npm test
$ npm t
Vordefinierte Skripte
Skriptname | Beschreibung |
---|---|
vorveröffentlichen | Ausführen, bevor das Paket veröffentlicht wird. |
veröffentlichen, postpublish | Ausführen, nachdem das Paket veröffentlicht wurde. |
vorinstallieren | Führen Sie den Vorgang aus, bevor das Paket installiert wird. |
installieren, nachinstallieren | Ausführen, nachdem das Paket installiert wurde. |
deinstallieren, deinstallieren | Ausführen, bevor das Paket deinstalliert wird. |
postuninstall | Nach der Deinstallation des Pakets ausführen. |
Vorversion, Version | Führen Sie den Vorgang aus, bevor Sie die Paketversion stoßen. |
Postversion | Führen Sie nach dem Bump die Paketversion aus. |
Vortest, Test, Posttest | Führen Sie den Befehl npm test |
Stoppen Sie, stoppen Sie, stoppen Sie | Führen Sie den Befehl npm stop |
Prestart, Start, Poststart | Führen Sie den Befehl npm start |
Neustart, Neustart, Neustart | Wird mit dem Befehl npm restart ausgeführt |
Benutzerdefinierte Skripte
Sie können auch Ihre eigenen Skripts auf die gleiche Weise definieren wie mit den vordefinierten Skripts:
{
"scripts": {
"preci": "scripts/preci.js",
"ci": "scripts/ci.js",
"postci": "scripts/postci.js"
}
}
In diesem Fall können Sie das Skript ausführen, indem Sie einen der folgenden Befehle ausführen:
$ npm run-script ci
$ npm run ci
Benutzerdefinierte Skripte unterstützt auch Pre- und Post - Skripte, wie im obigen Beispiel gezeigt.
Erweiterte Projektdefinition
Einige der zusätzlichen Attribute werden von der npm-Website wie repository
, bugs
oder homepage
analysiert und im Infobox für diese Pakete angezeigt
{
"main": "server.js",
"repository" : {
"type": "git",
"url": "git+https://github.com/<accountname>/<repositoryname>.git"
},
"bugs": {
"url": "https://github.com/<accountname>/<repositoryname>/issues"
},
"homepage": "https://github.com/<accountname>/<repositoryname>#readme",
"files": [
"server.js", // source files
"README.md", // additional files
"lib" // folder with all included files
]
}
Feld | Beschreibung |
---|---|
Main | Einstiegsskript für dieses Paket. Dieses Skript wird zurückgegeben, wenn ein Benutzer das Paket benötigt. |
Repository | Ort und Typ des öffentlichen Repositorys |
Bugs | Bugtracker für dieses Paket (zB github) |
Startseite | Homepage für dieses Paket oder das allgemeine Projekt |
Dateien | Liste der Dateien und Ordner, die heruntergeladen werden sollten, wenn ein Benutzer eine npm install <packagename> |
Paket.json erkunden
Eine package.json
Datei, die normalerweise im Projektstammverzeichnis vorhanden ist, enthält Metadaten zu Ihrer App oder Ihrem Modul sowie die Liste der Abhängigkeiten, die von npm bei der Ausführung von npm install
.
Um eine package.json
zu initialisieren, geben package.json
npm init
an der Eingabeaufforderung ein.
Um eine package.json
mit Standardwerten zu erstellen, verwenden Sie:
npm init --yes
# or
npm init -y
Um ein Paket zu installieren und in package.json
zu package.json
verwenden Sie:
npm install {package name} --save
Sie können auch die Kurzschreibweise verwenden:
npm i -S {package name}
NPM-Aliasnamen -S
an --save
und -D
an --save-dev
, um sie in Ihren Produktions- bzw. Entwicklungsabhängigkeiten zu speichern.
Das Paket wird in Ihren Abhängigkeiten angezeigt. Wenn Sie --save-dev
anstelle von --save
, wird das Paket in Ihren devDependencies angezeigt.
Wichtige Eigenschaften von package.json
:
{
"name": "module-name",
"version": "10.3.1",
"description": "An example module to illustrate the usage of a package.json",
"author": "Your Name <[email protected]>",
"contributors": [{
"name": "Foo Bar",
"email": "[email protected]"
}],
"bin": {
"module-name": "./bin/module-name"
},
"scripts": {
"test": "vows --spec --isolate",
"start": "node index.js",
"predeploy": "echo About to deploy",
"postdeploy": "echo Deployed",
"prepublish": "coffee --bare --compile --output lib/foo src/foo/*.coffee"
},
"main": "lib/foo.js",
"repository": {
"type": "git",
"url": "https://github.com/username/repo"
},
"bugs": {
"url": "https://github.com/username/issues"
},
"keywords": [
"example"
],
"dependencies": {
"express": "4.2.x"
},
"devDependencies": {
"assume": "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"
},
"peerDependencies": {
"moment": ">2.0.0"
},
"preferGlobal": true,
"private": true,
"publishConfig": {
"registry": "https://your-private-hosted-npm.registry.domain.com"
},
"subdomain": "foobar",
"analyze": true,
"license": "MIT",
"files": [
"lib/foo.js"
]
}
Informationen zu wichtigen Eigenschaften:
name
Der eindeutige Name Ihres Pakets sollte in Kleinbuchstaben angegeben werden. Diese Eigenschaft ist erforderlich und Ihr Paket kann nicht ohne installiert werden.
- Der Name darf höchstens 214 Zeichen umfassen.
- Der Name darf nicht mit einem Punkt oder Unterstrich beginnen.
- Neue Pakete dürfen keine Großbuchstaben enthalten.
version
Die Version des Pakets wird durch Semantic Versioning (Semver) angegeben. Dabei wird davon ausgegangen, dass eine Versionsnummer als MAJOR.MINOR.PATCH geschrieben wird und Sie das Inkrement erhöhen:
- MAJOR-Version, wenn Sie inkompatible API-Änderungen vornehmen
- MINOR-Version, wenn Sie Funktionalität rückwärtskompatibel hinzufügen
- PATCH-Version, wenn Sie rückwärtskompatible Fehlerbehebungen vornehmen
description
Die Beschreibung des Projekts. Versuchen Sie es kurz und prägnant zu halten.
author
Der Autor dieses Pakets.
bin
Ein Objekt, mit dem Binärskripts aus Ihrem Paket angezeigt werden. Das Objekt nimmt an, dass der Schlüssel der Name des Binärskripts und der Wert ein relativer Pfad zum Skript ist.
Diese Eigenschaft wird von Paketen verwendet, die eine CLI (Befehlszeilenschnittstelle) enthalten.
script
Ein Objekt, das zusätzliche npm-Befehle verfügbar macht. Das Objekt nimmt an, dass der Schlüssel der Befehl npm ist und der Wert der Skriptpfad ist. Diese Skripts können ausgeführt werden, wenn Sie npm run {command name}
oder npm run-script {command name}
.
Pakete, die eine Befehlszeilenschnittstelle enthalten und lokal installiert sind, können ohne relativen Pfad aufgerufen werden. Anstatt ./node-modules/.bin/mocha
, können Sie also direkt mocha
aufrufen.
main
Der Haupteinstiegspunkt für Ihr Paket. Beim Aufruf von require('{module name}')
im Knoten handelt es sich um die tatsächlich benötigte Datei.
Es wird dringend empfohlen, dass das Anfordern der Hauptdatei keine Nebeneffekte erzeugt. Das Anfordern der Hauptdatei sollte beispielsweise keinen HTTP-Server starten oder eine Verbindung zu einer Datenbank herstellen. Stattdessen sollten Sie in Ihrem Hauptskript etwas wie exports.init = function () {...}
erstellen.
keywords
Eine Reihe von Keywords, die Ihr Paket beschreiben. Diese helfen den Leuten, Ihr Paket zu finden.
devDependencies
Dies sind die Abhängigkeiten, die nur für die Entwicklung und den Test Ihres Moduls vorgesehen sind. Die Abhängigkeiten werden automatisch installiert, sofern nicht die NODE_ENV=production
festgelegt wurde. Wenn dies der Fall ist, können Sie diese Pakete weiterhin mit npm install --dev
peerDependencies
Wenn Sie dieses Modul verwenden, listet peerDependencies die Module auf, die Sie neben diesem Modul installieren müssen. Zum Beispiel muss moment-timezone
neben moment
installiert moment
da es sich um ein Plugin für Moment handelt, auch wenn es nicht direkt require("moment")
.
preferGlobal
Eine Eigenschaft, die angibt, dass diese Seite die globale npm install -g {module-name}
mit npm install -g {module-name}
. Diese Eigenschaft wird von Paketen verwendet, die eine CLI (Befehlszeilenschnittstelle) enthalten.
In allen anderen Situationen sollten Sie diese Eigenschaft NICHT verwenden.
publishConfig
Die publishConfig ist ein Objekt mit Konfigurationswerten, die zum Veröffentlichen von Modulen verwendet werden. Die eingestellten Konfigurationswerte setzen Ihre Standard-npm-Konfiguration außer Kraft.
Die häufigste Verwendung von publishConfig
ist das Veröffentlichen des Pakets in einer privaten npm-Registrierung, sodass Sie weiterhin die Vorteile von npm nutzen können, jedoch nicht für private Pakete. Dazu legen Sie einfach die URL Ihrer privaten npm als Wert für den Registrierungsschlüssel fest.
files
Dies ist ein Array aller Dateien, die in das veröffentlichte Paket aufgenommen werden sollen. Es kann entweder ein Dateipfad oder ein Ordnerpfad verwendet werden. Der gesamte Inhalt eines Ordnerpfads wird eingeschlossen. Dies reduziert die Gesamtgröße Ihres Pakets, indem nur die korrekten Dateien zum Verteilen eingeschlossen werden. Dieses Feld arbeitet mit einer .npmignore
.