node-gyp - Node.js natives Addon -Build -Tool 
node-gyp ist ein plattformübergreifendes Befehlszeilen-Tool, das in node.js geschrieben wurde, um native Addon-Module für node.js. Es enthält eine verwendete Kopie des Gyp-Next-Projekts, das zuvor vom Chrom-Team verwendet und erweitert wurde, um die Entwicklung von nativen Node.js-nativen Addons zu unterstützen.
Beachten Sie, dass node-gyp nicht zum Erstellen von Node.js selbst verwendet wird.
Alle aktuellen und LTS -Zielversionen von Node.js werden unterstützt. Je nachdem, welche Version von node.js tatsächlich auf Ihrem System node-gyp installiert ist, lädt die erforderlichen Entwicklungsdateien oder Header für die Zielversion herunter. Liste der stabilen Node.js -Versionen finden Sie auf der Website von Node.js.
Wichtig
Python> = v3.12 erfordert node-gyp > = V10
Sie können node-gyp mit npm installieren:
npm install -g node-gypAbhängig von Ihrem Betriebssystem müssen Sie installieren:
makeXcode Command Line Tools die clang , clang++ installieren und make .Xcode Command Line Tools Standalone, indem Sie xcode-select --install ausführen. -- ODER --Xcode -> Open Developer Tool -> More Developer Tools...Installieren Sie Werkzeuge mit schokoladigem:
choco install python visualstudio2022-workload-vctools -yOder installieren und konfigurieren Sie Python- und Visual Studio -Tools manuell:
Installieren Sie die aktuelle Version von Python aus dem Microsoft Store.
Installieren Sie Visual C ++ Build -Umgebung: Verwenden Sie für Visual Studio 2019 oder höher die Desktop development with C++ Workload von der Visual Studio Community. Installieren Sie für eine Version, die älter als Visual Studio 2019 ist, Visual Studio Build -Tools mit der Option Visual C++ build tools .
Wenn die obigen Schritte für Sie nicht funktionierten, besuchen Sie bitte die Richtlinien von Microsoft Node.js für Windows, um zusätzliche Tipps zu erhalten.
Fügen Sie die Komponenten "visuelle C ++ - Compiler und Bibliotheken für ARM64" und "Visual C ++ ATL für ARM64" hinzu, um den nativen ARM64 -Node.js an den Fenstern an den Fenstern auf den Arm zu zielen.
Um den nativen ARM64 C ++ - Compiler an Fenstern auf dem Arm zu verwenden, stellen Sie sicher, dass Sie Visual Studio 2022 17.4 oder später installiert haben.
Es wird empfohlen, das folgende PowerShell -Modul zu installieren: vsSetUp mit Install-Module VSSetup -Scope CurrentUser . Dadurch wird die Erkennung von Visual Studio für eine flexiblere und zugängliche Methode verwendet, wodurch PowerShells ConstrainedLanguage Modus vermieden wird.
node-gyp erfordert, dass Sie eine unterstützte Version von Python installiert haben. Wenn Sie mehrere Versionen von Python installiert haben, können Sie feststellen, welcher node-gyp auf eine der folgenden Arten verwendet werden soll:
--python , z. B.: node-gyp < command > --python /path/to/executable/pythonnode-gyp als npm aufgerufen wird und Sie mehrere Versionen von Python installiert haben, können Sie die Umgebungsvariable npm_config_python auf den entsprechenden Pfad festlegen: export npm_config_python=/path/to/executable/pythonOder unter Windows:
py --list-paths # To see the installed Python versions
set npm_config_python=C:pathtopython.exe # CMD
$Env:npm_config_python="C:pathtopython.exe" # PowerShell Wenn die PYTHON -Umgebungsvariable auf den Pfad einer ausführbaren Python -Datei eingestellt ist, wird diese Version verwendet, wenn es sich um eine unterstützte Version handelt.
Wenn die Umgebungsvariable NODE_GYP_FORCE_PYTHON auf den Pfad einer ausführbaren Python-Datei eingestellt ist, wird er anstelle einer der anderen konfigurierten oder integrierten Python-Suchpfade verwendet. Wenn es sich nicht um eine kompatible Version handelt, werden keine weiteren Suche durchgeführt.
Beim Erstellen von Modulen für Node.js-Laufzeiten von Drittanbietern wie Electron, die unterschiedliche Build-Konfigurationen als die offizielle Node.js-Verteilung haben, sollten Sie --dist-url oder --nodedir -Flags verwenden, um die Kopfzeile der Laufzeit für die Erstellung zu spezifizieren. .
Auch wenn-DIST process.config --dist-url oder config.gypi --nodedir Flags übergeben werden die laufende Node.js -Instanz.
Einige alte Versionen von Elektronen versendeten fehlformte config.gypi in ihren Header-Verteilungen, und Sie müssen möglicherweise übergeben --force-process-config to Node-GYP, um Konfigurationsfehler zu bearbeiten.
Um Ihr natives Addon zuerst zu kompilieren, gehen Sie zuerst in das Root -Verzeichnis:
cd my_node_addon Der nächste Schritt besteht darin, die entsprechenden Projekt -Build -Dateien für die aktuelle Plattform zu generieren. Verwenden Sie dafür configure :
node-gyp configure Die automatische Erkennung fällt --msvs_version=2015 Visual C ++ Build Tools 2015 aus.
node-gyp configure --msvs_version=2015 HINWEIS : Der Schritt configure Sie eine binding.gyp -Datei im aktuellen Verzeichnis. Anweisungen zum Erstellen einer binding.gyp -Datei finden Sie unten.
Jetzt haben Sie entweder eine Makefile (auf UNIX -Plattformen) oder eine vcxproj -Datei (unter Windows) im build/ Verzeichnis. Geben Sie als Nächstes den Befehl build auf:
node-gyp build Jetzt haben Sie Ihre kompilierte .node -Bindungsdatei! Die kompilierten Bindungen landen je nach Build -Modus in build/Debug/ oder build/Release/ . An diesem Punkt können Sie die .node -Datei mit node.js benötigen und Ihre Tests ausführen!
HINWEIS: Um einen Debug -Build der Bindungsdatei zu erstellen, übergeben Sie den --debug (oder -d ) -Schalter, wenn Sie entweder die Befehle configure , build oder rebuild .
binding.gyp -Datei Eine binding.gyp -Datei beschreibt die Konfiguration zum Erstellen Ihres Moduls in einem JSON-ähnlichen Format. Diese Datei wird neben package.json in das Stammverschluss Ihres Pakets platziert.
Eine Barebones gyp -Datei, die zum Erstellen eines Node.js -Addon geeignet ist, könnte so aussehen:
{
"targets" : [
{
"target_name" : "binding" ,
"sources" : [ "src/binding.cc" ]
}
]
}Das DOCS -Verzeichnis enthält eine zusätzliche Dokumentation zu bestimmten Knoten-GYP-Themen, die möglicherweise nützlich sein, wenn Sie Probleme haben, Addons mit Node-GYP zu installieren oder zu bauen.
Einige zusätzliche Ressourcen für Node.js native Addons und Schreiben gyp -Konfigurationsdateien:
node-gyp reagiert auf die folgenden Befehle:
| Befehl | Beschreibung |
|---|---|
help | Zeigt den Hilfedialog an |
build | Aufrufe make / msbuild.exe und baut das native Addon auf |
clean | Entfernt das build -Verzeichnis, wenn es existiert |
configure | Generiert Projektbuild -Dateien für die aktuelle Plattform |
rebuild | Läuft clean , configure und build alle in einer Reihe |
install | Installiert node.js Header -Dateien für die angegebene Version |
list | Listet die aktuell installierten Node.js -Header -Versionen auf |
remove | Entfernt die Header -Dateien node.js für die angegebene Version |
node-gyp akzeptiert die folgenden Befehlsoptionen:
| Befehl | Beschreibung |
|---|---|
-jn , --jobs n | make parallel. Der Wert max verwendet alle verfügbaren CPU -Kerne |
--target=v6.2.1 | Node.js Version zu erstellen (Standard ist process.version ) |
--silly , --loglevel=silly | Protokollieren Sie alle Fortschritte zur Konsole |
--verbose , --loglevel=verbose | Log die meisten Fortschritte bei der Konsole an |
--silent , --loglevel=silent | Melden Sie sich nichts bei einer Konsole an |
debug , --debug | Debug -Build machen (Standard ist Release ) |
--release , --no-debug | Release Build machen |
-C $dir , --directory=$dir | Befehl im verschiedenen Verzeichnis ausführen |
--make=$make | Überschreiben make den Befehl (zB gmake ) |
--thin=yes | Aktivieren Sie dünne statische Bibliotheken |
--arch=$arch | Zielarchitektur festlegen (z. B. IA32) |
--tarball=$path | Holen Sie sich Header aus einem örtlichen Tarball |
--devdir=$path | SDK -Download -Verzeichnis (Standard ist das OS -Cache -Verzeichnis) |
--ensure | Setzen Sie die Header nicht neu, wenn Sie bereits vorhanden sind |
--dist-url=$url | Laden Sie den Header Tarball von der benutzerdefinierten URL herunter |
--proxy=$url | Setzen Sie den HTTP (S) Proxy zum Herunterladen des Header -Tarballs |
--noproxy=$urls | Stellen Sie URLs fest, um Proxies beim Herunterladen von Header -Tarball zu ignorieren |
--cafile=$cafile | Standard CA -Kette überschreiben (um Tarball herunterzuladen) |
--nodedir=$path | Stellen Sie den Pfad zum Knotenquellcode ein |
--python=$path | Setzen Sie den Pfad zum Python Binary |
--msvs_version=$version | Setzen Sie die Visual Studio -Version (nur Windows) |
--solution=$solution | Setzen Sie die Visual Studio Solution Version (nur Windows) |
--force-process-config | Erzwingen Sie mit dem Objekt von Runtime process.config um die Datei config.gypi zu generieren |
Verwenden Sie das Formular npm_config_OPTION_NAME für eine der oben aufgeführten Befehlsoptionen (Striche in Optionsnamen sollten durch Unterstriche ersetzt werden).
Um devdir beispielsweise gleich für /tmp/.gyp festzulegen, würden Sie:
Führen Sie dies auf Unix aus:
export npm_config_devdir=/tmp/.gypOder dies unter Windows:
set npm_config_devdir=c:temp.gypnpm -Konfiguration für NPM -Versionen vor V9 Verwenden Sie den Formular OPTION_NAME für eine der oben aufgeführten Befehlsoptionen.
Zum Beispiel würden Sie ausführen, um devdir gleich zu setzen /tmp/.gyp :
npm config set [--global] devdir /tmp/.gyp HINWEIS: Der Konfigurationssatz über npm wird nur verwendet, wenn node-gyp über npm ausgeführt wird, nicht wenn node-gyp direkt ausgeführt wird.
node-gyp ist unter der MIT-Lizenz erhältlich. Weitere Informationen finden Sie in der Lizenzdatei.