In der Sprache von Node.js gibt es keinen wesentlichen Unterschied zwischen Paketen und Modulen. Pakete sind eine tiefere Abstraktion, die auf Modulen basiert. Pakete verkapeln eine bestimmte unabhängige Funktion für Release, Update, Abhängigkeitsverwaltung und Versionskontrolle. Node.js implementiert den Paketmechanismus gemäß der CommonJS -Spezifikation und entwickelt NPM, um die Paketfreigabe- und Erfassungsanforderungen zu lösen.
Das Paket node.js ist ein Verzeichnis, das das Paket Beschreibung Dateipaket.json im JSON -Format enthält. Das Paket node.js folgt im Grunde der CommonJS -Spezifikation, sodass es die folgenden Eigenschaften enthält:
Paketfunktionen, die durch die CommonJS -Spezifikation definiert sind:
1) Das Verzeichnis der obersten Ebene enthält die Paket.json-Datei;
2) Das Bin -Verzeichnis speichert Binärdateien;
3) Das Lib -Verzeichnis speichert JavaScript -Dateien;
4) Dokumente des DOC -Verzeichnisses speichern;
5) Die Testverzeichnisse speichern Unit -Tests.
Das Modul und die Datei node.js entsprechen einzeln. Die Datei kann nicht nur eine JavaScript -Quelldatei oder eine Binärdatei, sondern auch eine Verzeichnis sein. Das einfachste Paket ist ein Verzeichnismodul.
Das Paket node.js ist normalerweise eine Sammlung einiger Module, die auf Modulen basierende Abstraktionen auf höherer Ebene liefert, was der Bereitstellung einiger Feststellungsfunktionsbibliotheken entspricht.
Durch das Anpassen von Paket.json können wir komplexere, vollständigere und standardisiertere Pakete für die Veröffentlichung erstellen.
Wenn node.js ein Paket aufruft, überprüft es zunächst das Hauptfeld der Paket.json -Datei im Paket und verwendet es als Paket -Schnittstellenmodul. Wenn das Hauptfeld der Datei package.json nicht vorhanden ist, versucht Node.js, index.js oder index.node als Paketschnittstelle zu finden.
Die Datei package.json ist eine Datei, die von der CommonJS -Spezifikation verwendet wird, um das Paket zu beschreiben. Die Paket.json -Datei, die der Spezifikation vollständig entspricht, sollte die folgenden Felder enthalten:
1) Name: Paketname. Der Paketname ist eindeutig und besteht aus Kleinbuchstaben, Zahlen und Unterstrichen und kann keine Leerzeichen enthalten.
2) Beschreibung: Paket Beschreibung. Eine kurze Beschreibung des Pakets.
3) Version: Versionsnummer. Versionszeichenfolge, die der semantischen Versionserkennungsspezifikation erfüllt.
4) Schlüsselwörter: Keyword -Array, die normalerweise für die Suche verwendet wird.
5) Wartendeure: Wartungsanordnungsarray. Jedes Element enthält Name, E -Mail (optional) und Web (optional) Felder.
6) Mitwirkende: eine Reihe von Mitwirkenden. Das Format ist das gleiche wie das Wartungsarray. Der Paketautor sollte das erste Element des Mitwirkenden -Arrays sein.
7) Fehler: Die Adresse zum Senden des Fehlers kann eine URL- oder E -Mail -Adresse sein.
8) Lizenzen: Lizenzarray. Jedes Element muss den Typtyp (Lizenznamen) und die URL (Adresse mit dem Lizenztext verknüpft) enthalten.
9) Repositorys: Eine Reihe von Repository -Hosting -Adressen. Jedes Element muss den Typ (Typ des Repositorys wie GIT), URL (Repository -Adresse) und Pfad (optional relativ zum Repository -Pfad) enthalten.
10) Abhängigkeiten: Paketabhängigkeiten. ist ein assoziatives Array, das aus dem Paketnamen und der Versionsnummer besteht.
HINWEIS: Die Spezifikation "Semantische Versionserkennung" ist eine Reihe von Versionsnamenspezifikationen, die vom Ausland vorgeschlagen wurden. Der ursprüngliche Zweck bestand darin, verschiedene Vergleichsprobleme der Versionszahlen zu lösen, und wird derzeit von vielen Paketverwaltungssystemen übernommen.
Hier ist ein Beispielpaket.json, das der CommonJS -Spezifikation vollständig entspricht:
Die Codekopie lautet wie folgt:
{
"Name": "Testpackage",
"Beschreibung": "Mein Paket für CommonJs.",
"Version": "0.1.0",
"Schlüsselwörter": [
"Testpackung",
"liq"
],
"Betreuer": [
{
"Name": "liq",
"E -Mail": "[email protected]",
}
],
"Mitwirkende": [
{
"Name": "liq",
"Web": "http://blog.csdn.net/chszs"
}
],
"Bugs": {
"Mail": "[email protected]",
"Web": "http://blog.csdn.net/chszs"
},
"Lizenzen": [
{
"Typ": "Apache -Lizenz v2",
"URL": "http://www.apache.org/licenses/apache2.html"
}
],
"Repositories": [
{
"Typ": "Git",
"URL": "http://github.com/chszs/packagetest.git"
}
],
"Abhängigkeiten": {{
"Webkit": "1.2",
"SSL": {
"Gnutls": ["1.0", "2.0"],
"OpenSSL": "0.9.8"
}
}
}