nodejs / node-gyp

Build Status

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 door xcode-select --install uit te voeren. Als u al de volledige Xcode hebt geïnstalleerd, kunt u deze ook vinden onder het menu Xcode -> Open Developer Tool -> More Developer Tools.... Deze stap installeert clang, clang++, en make.

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-gypVoorwaarde 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:

  1. door de --python command-line optie in te stellen, bijv.:
node-gyp <command> --python /path/to/executable/python

  1. Als node-gyp wordt aangeroepen via npm, en u hebt meerdere versies van Python geïnstalleerd, dan kunt u de ‘python’-configuratiesleutel van npm op de juiste waarde instellen:
npm config set python /path/to/executable/python
  1. 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.

  2. 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