nodejs / node-gyp
node-gyp
är ett plattformsoberoende kommandoradsverktyg skrivet i Node.js för attkompilera native addon-moduler för Node.js. Det innehåller en såld kopia avgyp-next-projektet som tidigare användes av Chromium-teamet, utökat för att stödja utvecklingen av Node.js-inhemska tilläggsmoduler.
Bemärk att node-gyp
inte används för att bygga själva Node.js.
Flera målversioner av Node.js stöds (dvs. 0.8
, …, 4
, 5
, 6
, etc.).), oavsett vilken version av Node.js som faktiskt är installerad på ditt system (node-gyp
hämtar de nödvändiga utvecklingsfilerna eller rubrikerna för målversionen).
Funktioner
- Samma byggkommandon fungerar på alla plattformar som stöds
- Stödjer inriktning av olika versioner av Node.js
Installation
Du kan installera node-gyp
med hjälp av npm
:
npm install -g node-gyp
Avhängigt av ditt operativsystem måste du installera:
På Unix
- Python v3.6, v3.7, v3.8 eller v3.9
make
- En riktig C/C++-kompilatorverktygskedja, som GCC
På macOS
VARNING: Om din Mac har uppgraderats till macOS Catalina (10.15), läs macOS_Catalina.md.
- Python v3.6, v3.7, v3.8 eller v3.9
- Xcode
- Du måste också installera
XCode Command Line Tools
genom att köraxcode-select --install
. Alternativt, om du redan har hela Xcode installerat, kan du hitta dem under menynXcode -> Open Developer Tool -> More Developer Tools...
. Det här steget installerarclang
,clang++
ochmake
.
- Du måste också installera
På Windows
Installera den aktuella versionen av Python från Microsoft Store-paketet.
Installera verktyg och konfiguration manuellt:
- Installera Visual C++ Build Environment: Om ovanstående steg inte fungerade för dig kan du besöka Microsofts Node.js-riktlinjer för Windows för ytterligare tips.
För att rikta in Node.js mot native ARM64 på Windows 10 on ARM lägger du till komponenterna ”Visual C++ compilers and libraries for ARM64” och ”Visual C++ ATL for ARM64”.
Konfigurera Python-beroende
node-gyp
kräver att du har installerat en kompatibel version av Python, en av följande: v3.6, v3.7,v3.8, eller v3.9. Om du har flera Pythonversioner installerade kan du identifiera vilken Pythonversionnode-gyp
ska använda på något av följande sätt:- genom att ställa in kommandoradsalternativet
--python
, t.ex.:
node-gyp <command> --python /path/to/executable/python
- Om
node-gyp
anropas vianpm
, och du har flera versioner avPython installerade, kan du ställa innpm
s konfigurationsnyckel ”python” till lämpligt värde:
npm config set python /path/to/executable/python
-
Om miljövariabeln
PYTHON
är inställd på sökvägen till en körbar Pythonversion kommer den versionen att användas, om det är en kompatibel version. -
Om miljövariabeln
NODE_GYP_FORCE_PYTHON
är inställd på sökvägen för enPython-körbar fil kommer den att användas i stället för någon av de andra konfigurerade eller inbyggda sökvägarna för Python. Om det inte är en kompatibel version kommer ingen ytterligare sökning att göras.
Hur man använder
För att kompilera ditt infödda tillägg går du först till dess rotkatalog:
cd my_node_addon
Nästa steg är att generera lämpliga projektbyggfiler för den aktuella plattformen. Använd
configure
för det:node-gyp configure
Den automatiska identifieringen misslyckas för Visual C++ Build Tools 2015, så
--msvs_version=2015
måste läggas till (behövs inte när det körs av npm enligt konfigurationen ovan):node-gyp configure --msvs_version=2015
Anm.: Steg
configure
letar efter enbinding.gyp
-fil i aktuellkatalogen som ska behandlas. Se nedan för instruktioner om hur man skapar enbinding.gyp
-fil.Nu har du antingen en
Makefile
(på Unix-plattformar) eller envcxproj
-fil (på Windows) ibuild/
-katalogen. Därefter anropar du kommandotbuild
:node-gyp build
Nu har du din kompilerade
.node
bindningsfil! De kompilerade bindningarna hamnar ibuild/Debug/
ellerbuild/Release/
, beroende på byggläge. Nu kan du kräva.node
-filen med Node.js och köra dina tester!Observera: För att skapa ett Debug-bygge av bindningsfilen, ange växeln
--debug
(eller-d
) när du kör antingenconfigure
,build
ellerrebuild
-kommandon.Filen bindning.gyp
En
binding.gyp
-fil beskriver konfigurationen för att bygga din modul, i ettJSON-liknande format. Den här filen placeras i roten av ditt paket, tillsammans medpackage.json
.En barebones
gyp
fil som är lämplig för att bygga ett Node.jstillägg skulle kunna se ut så här:{ "targets": } ]}
Ytterligare läsning
En del ytterligare resurser för Node.js-tillägg och för att skriva
gyp
konfigurationsfiler:- ”Going Native” a nodeschool.io tutorial
- ”Hello World” node addon example
- gyp user documentation
- gyp input format reference
- ”binding.gyp” files out in the wild wiki page
Kommandon
node-gyp
svarar på följande kommandon:Kommando Beskrivning help
Visar dialogrutan för hjälp build
Invigerar make
/msbuild.exe
och bygger upp den inhemska addonclean
Flyttar bort katalogen build
om den finnsconfigure
Genererar projektbyggnadsfiler för den aktuella plattformen rebuild
Kör clean
,configure
ochbuild
i en följdinstall
Installerar Node.js headerfiler för den angivna versionen list
Listar de för närvarande installerade Node.js headerversionerna remove
Removes the Node.js headerfiler för den angivna versionen Kommandomöjligheter
node-gyp
accepterar följande kommandomöjligheter:Command Description -j n
,--jobs n
Kör make
parallellt. Värdetmax
kommer att använda alla tillgängliga CPU-kärnor--target=v6.2.1
Nod.js version att bygga för (standard är process.version
)--silly
,--loglevel=silly
Logga alla framsteg till konsolen --verbose
,--loglevel=verbose
Logga de flesta framsteg till konsolen --silent
,--loglevel=silent
Logga inget till konsolen debug
,--debug
Mak felsökningsbygge (standard är Release
)--release
,--no-debug
Mak Release-bygge -C $dir
,--directory=$dir
Kör kommandot i en annan katalog --make=$make
Override make
command (e.gmake
)--thin=yes
Aktivera tunna statiska bibliotek --arch=$arch
Sätt målarkitektur (t.ex. ia32) --tarball=$path
Hämta headers från en lokal tarball --devdir=$path
Downloadkatalog för SDK. (standard är OS cache-katalogen) --ensure
Ingen ominstallation av headers om de redan finns --dist-url=$url
Hämta header tarball från anpassad URL --proxy=$url
Sätt HTTP(S)-proxy för nedladdning av header tarball --noproxy=$urls
Sätt webbadresser som ignorerar proxys vid nedladdning av header tarball --cafile=$cafile
Override default CA chain (to download tarball) --nodedir=$path
Sätt sökvägen till nodens källkod --python=$path
Sätt sökvägen till Python binärfil --msvs_version=$version
Sätt Visual Studio-versionen (endast Windows) --solution=$solution
Sätt version av Visual Studio Solution (endast Windows) Konfiguration
Miljövariabler
Använd formen
npm_config_OPTION_NAME
för något av kommando-alternativen som listas ovan (bindestreck i alternativnamnen ska ersättas med understrykningar).För att till exempel sätta
devdir
lika med/tmp/.gyp
skulle du:Kör detta på Unix:
export npm_config_devdir=/tmp/.gyp
Och detta på Windows:
set npm_config_devdir=c:\temp\.gyp
npm-konfiguration
Använd formen
OPTION_NAME
för något av de kommandoalternativ som anges ovan.För att ställa in
devdir
lika med/tmp/.gyp
skulle du till exempel köra:npm config set devdir /tmp/.gyp
Notera: Konfiguration som ställts in via
npm
kommer endast att användas närnode-gyp
körs vianpm
, inte närnode-gyp
körs direkt.Licens
node-gyp
är tillgänglig under MIT-licensen. Se LICENSEfilen för detaljer. - genom att ställa in kommandoradsalternativet
Leave a Reply