nodejs / node-gyp
node-gyp
is een cross-platform command-line tool geschreven in Node.js voor het compileren van native addon modules voor Node.js. Het bevat een vendored kopie van hetgyp-next project dat voorheen door het Chromium team werd gebruikt, uitgebreid om de ontwikkeling van Node.js native addons te ondersteunen.
Merk op dat node-gyp
niet wordt gebruikt om Node.js zelf te bouwen.
Meerdere doelversies van Node.js worden ondersteund (d.w.z. 0.8
, …, 4
, 5
, 6
, enz.), ongeacht welke versie van Node.js daadwerkelijk op uw systeem is geïnstalleerd(node-gyp
downloadt de noodzakelijke ontwikkelingsbestanden of headers voor de doelversie).
Eigenschappen
- Dezelfde build-opdrachten werken op elk van de ondersteunde platforms
- Ondersteunt de targeting van verschillende versies van Node.js
Installatie
U kunt node-gyp
installeren met npm
:
npm install -g node-gyp
Afhankelijk van uw besturingssysteem, dient u te installeren:
Op Unix
- Python v3.6, v3.7, v3.8, of v3.9
make
- Een goede C/C++ compiler toolchain, zoals GCC
Op macOS
ATTENTIE: Als uw Mac is geüpgraded naar macOS Catalina (10.15), lees dan macOS_Catalina.md.
- Python v3.6, v3.7, v3.8, of v3.9
- Xcode
- U moet ook de
XCode Command Line Tools
installeren doorxcode-select --install
uit te voeren. Als u al de volledige Xcode hebt geïnstalleerd, kunt u deze ook vinden onder het menuXcode -> Open Developer Tool -> More Developer Tools...
. Deze stap installeertclang
,clang++
, enmake
.
- U moet ook de
Onder Windows
Installeer de huidige versie van Python uit het Microsoft Store pakket.
Installeer gereedschappen en configuratie handmatig:
- Installeer Visual C++ Build Environment: Visual Studio Build Tools(met behulp van “Visual C++ build tools” werklast) of Visual Studio 2017 Community(met behulp van de “Desktop development with C++” werklast)
- Lanceer cmd,
npm config set msvs_version 2017
Als de bovenstaande stappen niet voor u werkten, bezoek dan Microsoft’s Node.js Guidelines for Windows voor aanvullende tips.
Om native ARM64 Node.js op Windows 10 op ARM te targeten, voegt u de componenten “Visual C++ compilers and libraries for ARM64” en “Visual C++ ATL for ARM64” toe.
Python-afhankelijkheid configureren
node-gyp
Voorwaarde is dat u een compatibele versie van Python hebt geïnstalleerd, een van: v3.6, v3.7,v3.8, of v3.9. Indien u meerdere Python-versies hebt geïnstalleerd, kunt u op een van de volgende manieren aangeven welke Python-versie node-gyp
moet gebruiken:
- door de
--python
command-line optie in te stellen, bijv.:
node-gyp <command> --python /path/to/executable/python
- Als
node-gyp
wordt aangeroepen vianpm
, en u hebt meerdere versies van Python geïnstalleerd, dan kunt u de ‘python’-configuratiesleutel vannpm
op de juiste waarde instellen:
npm config set python /path/to/executable/python
-
Als de omgevingsvariabele
PYTHON
is ingesteld op het pad van een uitvoerbare Python-versie, dan zal die versie worden gebruikt, als het een compatibele versie is. -
Als de omgevingsvariabele
NODE_GYP_FORCE_PYTHON
is ingesteld op het pad van een Python-uitvoerbaar bestand, wordt dit gebruikt in plaats van een van de andere geconfigureerde of ingebouwde Python-zoekpaden. Als het geen compatibele versie is, wordt er niet verder gezocht.
Hoe te gebruiken
Om uw native addon te compileren, gaat u eerst naar de hoofddirectory:
cd my_node_addon
De volgende stap is het genereren van de juiste project build bestanden voor het huidige platform. Gebruik daarvoor configure
:
node-gyp configure
Autodetectie mislukt voor Visual C++ Build Tools 2015, dus --msvs_version=2015
moet worden toegevoegd (niet nodig wanneer uitgevoerd door npm zoals hierboven geconfigureerd):
node-gyp configure --msvs_version=2015
Note: De configure
stap zoekt naar een binding.gyp
bestand in de huidige directory om te verwerken. Zie hieronder voor instructies over het maken van een binding.gyp
bestand.
Nu heeft u ofwel een Makefile
(op Unix platforms) of een vcxproj
bestand (op Windows) in de build/
directory. Roep vervolgens het build
commando op:
node-gyp build
Nu hebt u uw gecompileerde .node
bindingsbestand! De gecompileerde bindingen eindigen in build/Debug/
of build/Release/
, afhankelijk van de build mode. Op dit punt kunt u het .node
bestand met Node.js vereisen en uw tests uitvoeren!
Note: Om een Debug build van het bindingsbestand te maken, geeft u de --debug
(of-d
) switch door wanneer u de configure
, build
of rebuild
commando’s uitvoert.
Het binding.gyp bestand
Een binding.gyp
bestand beschrijft de configuratie om uw module te bouwen, in een JSON-achtig formaat. Dit bestand wordt in de root van uw pakket geplaatst, naastpackage.json
.
Een kaal gyp
bestand dat geschikt is voor het bouwen van een Node.js addon zou er zo uit kunnen zien:
{ "targets": } ]}
Verder lezen
Een aantal aanvullende bronnen voor Node.js native addons en het schrijven van gyp
configuratiebestanden:
- “Going Native” een nodeschool.io tutorial
- “Hello World” node addon voorbeeld
- gyp gebruikersdocumentatie
- gyp invoerformaat referentie
- “binding.gyp” files out in the wild wiki page
Commando’s
node-gyp
reageert op de volgende commando’s:
Command | Description |
---|---|
help |
Toont het help-dialoogvenster |
build |
Oproept make /msbuild.exe en bouwt de native addon |
clean |
Verwijdert de build directory indien deze bestaat |
configure |
Genereert project build files voor het huidige platform |
rebuild |
Draait clean , configure en build allemaal achter elkaar |
install |
Installeert Node.js header-bestanden voor de opgegeven versie |
list |
Lijst met de momenteel geïnstalleerde Node.js header-versies |
remove |
Verwijdert de Node.js header-bestanden voor de opgegeven versie |
Command Options
node-gyp
accepteert de volgende commando-opties:
Command | Description |
---|---|
-j n , --jobs n |
Run make in parallel. De waarde max zal alle beschikbare CPU cores gebruiken |
--target=v6.2.1 |
Node.js versie om voor te bouwen (standaard is process.version ) |
--silly , --loglevel=silly |
Log alle voortgang naar console |
--verbose , --loglevel=verbose |
Log meeste vooruitgang naar console |
--silent , --loglevel=silent |
Log niets naar console |
debug , --debug |
Make Debug build (standaard is Release ) |
--release , --no-debug |
Make Release build |
-C $dir , --directory=$dir |
Commando uitvoeren in andere directory |
--make=$make |
Override make commando (bijv.b.v. gmake ) |
--thin=yes |
Dunne statische bibliotheken inschakelen |
--arch=$arch |
Doelarchitectuur instellen (b.v. ia32) |
--tarball=$path |
Haal headers op van een lokale tarball |
--devdir=$path |
SDK download directory (standaard is de OS cache directory) |
--ensure |
Installeer headers niet opnieuw indien reeds aanwezig |
--dist-url=$url |
Download header tarball van aangepaste URL |
--proxy=$url |
Stel HTTP(S) proxy in voor het downloaden van header tarball |
--noproxy=$urls |
Stel url’s in om proxies te negeren bij het downloaden van header tarball |
--cafile=$cafile |
Override standaard CA-keten (om tarball te downloaden) |
--nodedir=$path |
Stel het pad in naar de broncode van het knooppunt |
--python=$path |
Stel het pad in naar de Python binary |
--msvs_version=$version |
Stel de Visual Studio versie in (alleen Windows) |
--solution=$solution |
Versie Visual Studio-oplossing instellen (alleen Windows) |
Configuratie
Omgevingsvariabelen
Gebruik de vorm npm_config_OPTION_NAME
voor elk van de bovenstaande opdrachtopties (streepjes in optienamen moeten worden vervangen door underscores).
Om bijvoorbeeld devdir
gelijk te stellen aan /tmp/.gyp
, zou u:
Dit uitvoeren op Unix:
export npm_config_devdir=/tmp/.gyp
Of dit op Windows:
set npm_config_devdir=c:\temp\.gyp
npm configuration
Gebruik de vorm OPTION_NAME
voor een van de bovenstaande commando-opties.
Om bijvoorbeeld devdir
gelijk te stellen aan /tmp/.gyp
, zou u het volgende uitvoeren:
npm config set devdir /tmp/.gyp
Note: Configuratie ingesteld via npm
zal alleen worden gebruikt wanneer node-gyp
wordt uitgevoerd via npm
, niet wanneer node-gyp
direct wordt uitgevoerd.
Licentie
node-gyp
is beschikbaar onder de MIT-licentie. Zie het LICENSE-bestand voor details.
Leave a Reply