nodejs / node-gyp

Build Status

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öra xcode-select --install. Alternativt, om du redan har hela Xcode installerat, kan du hitta dem under menyn Xcode -> Open Developer Tool -> More Developer Tools.... Det här steget installerar clang, clang++ och make.

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 Pythonversion node-gyp ska använda på något av följande sätt:

    1. genom att ställa in kommandoradsalternativet --python, t.ex.:
    node-gyp <command> --python /path/to/executable/python
    1. Om node-gyp anropas via npm, och du har flera versioner avPython installerade, kan du ställa in npms konfigurationsnyckel ”python” till lämpligt värde:
    npm config set python /path/to/executable/python
    1. 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.

    2. 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=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 configure letar efter en binding.gyp-fil i aktuellkatalogen som ska behandlas. Se nedan för instruktioner om hur man skapar en binding.gyp-fil.

    Nu har du antingen en Makefile (på Unix-plattformar) eller en vcxproj-fil (på Windows) i build/-katalogen. Därefter anropar du kommandot build:

    node-gyp build

    Nu har du din kompilerade .node bindningsfil! De kompilerade bindningarna hamnar i build/Debug/ eller build/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 antingen configure, build eller rebuild-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 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 addon
    clean Flyttar bort katalogen build om den finns
    configure Genererar projektbyggnadsfiler för den aktuella plattformen
    rebuild Kör clean, configure och build i en följd
    install 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ärdet max 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är node-gyp körs via npm, inte när node-gyp körs direkt.

    Licens

    node-gyp är tillgänglig under MIT-licensen. Se LICENSEfilen för detaljer.

Leave a Reply