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 Tools
ved 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-gyp
kaldes ved hjælp afnpm
, og du har flere versioner afPython installeret, kan du indstillenpm
s konfigurationsnøgle ‘python’ til den passendeværdi:
npm config set python /path/to/executable/python
-
Hvis miljøvariablen
PYTHON
er 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_PYTHON
er 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