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 Toolsgenom 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-gypkrä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-gypska 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-gypanropas vianpm, och du har flera versioner avPython installerade, kan du ställa innpms 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
configureför det:node-gyp configure
Den automatiska identifieringen misslyckas för Visual C++ Build Tools 2015, så
--msvs_version=2015må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
configureletar 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
.nodebindningsfil! 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,buildellerrebuild-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
gypfil 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
gypkonfigurationsfiler:- ”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-gypsvarar på följande kommandon:Kommando Beskrivning helpVisar dialogrutan för hjälp buildInvigerar make/msbuild.exeoch bygger upp den inhemska addoncleanFlyttar bort katalogen buildom den finnsconfigureGenererar projektbyggnadsfiler för den aktuella plattformen rebuildKör clean,configureochbuildi en följdinstallInstallerar Node.js headerfiler för den angivna versionen listListar de för närvarande installerade Node.js headerversionerna removeRemoves the Node.js headerfiler för den angivna versionen Kommandomöjligheter
node-gypaccepterar följande kommandomöjligheter:Command Description -j n,--jobs nKör makeparallellt. Värdetmaxkommer att använda alla tillgängliga CPU-kärnor--target=v6.2.1Nod.js version att bygga för (standard är process.version)--silly,--loglevel=sillyLogga alla framsteg till konsolen --verbose,--loglevel=verboseLogga de flesta framsteg till konsolen --silent,--loglevel=silentLogga inget till konsolen debug,--debugMak felsökningsbygge (standard är Release)--release,--no-debugMak Release-bygge -C $dir,--directory=$dirKör kommandot i en annan katalog --make=$makeOverride makecommand (e.gmake)--thin=yesAktivera tunna statiska bibliotek --arch=$archSätt målarkitektur (t.ex. ia32) --tarball=$pathHämta headers från en lokal tarball --devdir=$pathDownloadkatalog för SDK. (standard är OS cache-katalogen) --ensureIngen ominstallation av headers om de redan finns --dist-url=$urlHämta header tarball från anpassad URL --proxy=$urlSätt HTTP(S)-proxy för nedladdning av header tarball --noproxy=$urlsSätt webbadresser som ignorerar proxys vid nedladdning av header tarball --cafile=$cafileOverride default CA chain (to download tarball) --nodedir=$pathSätt sökvägen till nodens källkod --python=$pathSätt sökvägen till Python binärfil --msvs_version=$versionSätt Visual Studio-versionen (endast Windows) --solution=$solutionSätt version av Visual Studio Solution (endast Windows) Konfiguration
Miljövariabler
Använd formen
npm_config_OPTION_NAMEför något av kommando-alternativen som listas ovan (bindestreck i alternativnamnen ska ersättas med understrykningar).För att till exempel sätta
devdirlika med/tmp/.gypskulle 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_NAMEför något av de kommandoalternativ som anges ovan.För att ställa in
devdirlika med/tmp/.gypskulle du till exempel köra:npm config set devdir /tmp/.gyp
Notera: Konfiguration som ställts in via
npmkommer endast att användas närnode-gypkörs vianpm, inte närnode-gypkö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