nodejs / node-gyp
node-gyp er et kommandolinjeværktøj på tværs af platforme skrevet i Node.js til kompilering af native addon-moduler til Node.js. Det indeholder en solgt kopi afgyp-next-projektet, som tidligere blev brugt af Chromium-holdet, udvidet til at understøtte udviklingen af Node.js native addons.
Bemærk, at node-gyp ikke bruges til at bygge selve Node.js.
Multiple target versions of Node.js are supported (i.e. 0.8, …, 4, 5, 6,osv.), uanset hvilken version af Node.js der rent faktisk er installeret på dit system (node-gyp downloader de nødvendige udviklingsfiler eller headere til målversionen).
Funktioner
- De samme byggekommandoer fungerer på alle de understøttede platforme
- Støtter målretning af forskellige versioner af Node.js
Installation
Du kan installere node-gyp ved hjælp af npm:
npm install -g node-gyp
Afhængigt af dit styresystem skal du installere:
På Unix
- Python v3.6, v3.7, v3.8 eller v3.9
make- En ordentlig C/C++ compiler-værktøjskæde, som GCC
På macOS
BEMÆRK: Hvis din Mac er blevet opgraderet til macOS Catalina (10.15), skal du læse macOS_Catalina.md.
- Python v3.6, v3.7, v3.8, eller v3.9
- Xcode
- Du skal også installere
XCode Command Line Toolsved at kørexcode-select --install. Alternativt, hvis du allerede har det fulde Xcode installeret, kan du finde dem under menuenXcode -> Open Developer Tool -> More Developer Tools.... Dette trin installererclang,clang++ogmake.
- Du skal også installere
På Windows
Installer den aktuelle version af Python fra Microsoft Store-pakken.
Installer værktøjer og konfiguration manuelt:
- Installer Visual C++ Build Environment: Hvis ovenstående trin ikke virkede for dig, kan du besøge Microsofts Node.js-retningslinjer for Windows for at få yderligere tips:
- Lancer cmd,
npm config set msvs_version 2017
Hvis ovenstående trin ikke virkede for dig, kan du besøge Microsofts Node.js-retningslinjer for Windows for at få yderligere tips.
For at målrette native ARM64 Node.js på Windows 10 på ARM skal du tilføje komponenterne “Visual C++ compilers and libraries for ARM64” og “Visual C++ ATL for ARM64”.
Konfigurering af Python-afhængighed
node-gyp kræver, at du har installeret en kompatibel version af Python, en af: v3.6, v3.7,v3.8, eller v3.9. Hvis du har flere Python-versioner installeret, kan du identificere hvilken Pythonversion node-gyp skal bruge på en af følgende måder:
- ved at indstille kommandolinjeindstillingen
--python, f.eks.:
node-gyp <command> --python /path/to/executable/python
- Hvis
node-gypkaldes ved hjælp afnpm, og du har flere versioner afPython installeret, kan du indstillenpms konfigurationsnøgle ‘python’ til den passendeværdi:
npm config set python /path/to/executable/python
-
Hvis miljøvariablen
PYTHONer indstillet til stien til en eksekverbar Python-fil, vil denne version blive anvendt, hvis det er en kompatibel version. -
Hvis miljøvariablen
NODE_GYP_FORCE_PYTHONer angivet til stien til en eksekverbarPython-fil, vil den blive anvendt i stedet for en af de andre konfigurerede eller indbyggede Python-søgningsstier. Hvis det ikke er en kompatibel version, vil der ikke blive foretaget yderligere søgning.
Sådan bruges
For at kompilere dit native addon skal du først gå til dets rodmappe:
cd my_node_addon
Det næste trin er at generere de passende projektbygningsfiler til den aktuelle platform. Brug configure til det:
node-gyp configure
Autodetektion mislykkes for Visual C++ Build Tools 2015, så --msvs_version=2015 skal tilføjes (ikke nødvendigt, når det køres af npm som konfigureret ovenfor):
node-gyp configure --msvs_version=2015
Bemærk: Trin configure leder efter en binding.gyp-fil i den aktuellemappe, der skal behandles. Se nedenfor for instruktioner om oprettelse af en binding.gyp-fil.
Nu har du enten en Makefile (på Unix-platforme) eller en vcxproj-fil(på Windows) i build/-mappen. Dernæst påkalder du kommandoen build:
node-gyp build
Nu har du din kompilerede .node bindingsfil! De kompilerede bindinger ender i build/Debug/ eller build/Release/, afhængigt af byggetilstanden. På dette tidspunkt kan du kræve .node-filen med Node.js og køre dine tests!
OBS: Hvis du vil oprette et Debug-byg af bindingsfilen, skal du angive kontakten --debug (eller-d), når du kører enten configure, build eller rebuild-kommandoerne.
Filen binding.gyp
En binding.gyp-fil beskriver konfigurationen til at bygge dit modul i etJSON-lignende format. Denne fil placeres i roden af din pakke sammen medpackage.json.
En barebones gyp fil, der er egnet til opbygning af en Node.json-tilføjelse, kunne se således ud:
{ "targets": } ]}
Yderligere læsning
Nogle yderligere ressourcer til Node.js native addons og skrivning af gyp konfigurationsfiler:
- “Going Native” a nodeschool.io tutorial
- “Hello World” node addon example
- gyp user documentation
- gyp input format reference
- “binding.gyp” filer out in the wild wikiside
Kommandoer
node-gyp reagerer på følgende kommandoer:
| Kommando | Beskrivelse | |
|---|---|---|
help |
Viser dialogboksen for hjælp | |
build |
Invokerer make/msbuild.exe og opbygger den native addon |
|
clean |
Fraser mappen build, hvis den findes |
|
configure |
Genererer projektopbygningsfiler for den aktuelle platform | |
rebuild |
Kører clean, configure og build alle i en række |
|
install |
Installerer Node.js headerfiler for den givne version | |
list |
Lister over de aktuelt installerede Node.js headerversioner | |
remove |
Fjerne Node.js headerfiler for den givne version |
Kommando-indstillinger
node-gyp accepterer følgende kommando-indstillinger:
| Command | Description | |
|---|---|---|
-j n, --jobs n |
Kør make parallelt. Værdien max vil bruge alle tilgængelige CPU-kerner |
|
--target=v6.2.1 |
Node.js version, der skal bygges til (standard er process.version) |
|
--silly, --loglevel=silly |
Log alle fremskridt til konsollen | |
--verbose, --loglevel=verbose |
Log det meste af forløbet til konsollen | |
--silent, --loglevel=silent |
Log ikke noget til konsollen | |
debug, --debug |
Skab debug build (standard er Release) |
|
--release, --no-debug |
Skab release build | |
-C $dir, --directory=$dir |
Kør kommando i anden mappe | |
--make=$make |
Override make kommando (e.f.eks. gmake) |
|
--thin=yes |
Aktiver tynde statiske biblioteker | |
--arch=$arch |
Sæt målarkitektur (f.eks. ia32) | |
--tarball=$path |
Henter headers fra en lokal tarball | |
--devdir=$path |
SDK-downloadmappe (standard er OS cache-mappen) | |
--ensure |
Ingen geninstallation af headere, hvis de allerede er til stede | |
--dist-url=$url |
Download header tarball fra brugerdefineret URL | |
--proxy=$url |
Sæt HTTP(S)-proxy til download af header tarball | |
--noproxy=$urls |
Sæt url’er til at ignorere proxyer ved download af header tarball | |
--cafile=$cafile |
Override standard CA-kæde (til download af tarball) | |
--nodedir=$path |
Sæt stien til node-kildekoden | |
--python=$path |
Sæt stien til Python-binærfilen | |
--msvs_version=$version |
Sæt Visual Studio-version (kun Windows) | |
--solution=$solution |
Sæt version af Visual Studio-løsning (kun Windows) |
Konfiguration
Miljøvariabler
Brug formularen npm_config_OPTION_NAME for en af de kommando-indstillinger, der er anført ovenfor (bindestreger i optionsnavne skal erstattes af understregningstegn).
For eksempel, for at sætte devdir lig med /tmp/.gyp, skal du:
Kør dette på Unix:
export npm_config_devdir=/tmp/.gyp
Og dette på Windows:
set npm_config_devdir=c:\temp\.gyp
npm-konfiguration
Brug formen OPTION_NAME for en af de kommandoindstillinger, der er anført ovenfor.
For eksempel, for at indstille devdir svarende til /tmp/.gyp, skal du køre:
npm config set devdir /tmp/.gyp
Bemærk: Konfiguration indstillet via npm vil kun blive brugt, når node-gyp køres via npm, ikke når node-gyp køres direkte.
Licens
node-gyp er tilgængelig under MIT-licensen. Se LICENSEfilen for nærmere oplysninger.
Leave a Reply