nodejs / node-gyp

Build Status

node-gyp er et kommandolinjeværktøj på tværs af platforme skrevet i Node.js til kompilering af native addon-moduler til Node.js. Det indeholder en solgt kopi afgyp-next-projektet, som tidligere blev brugt af Chromium-holdet, udvidet til at understøtte udviklingen af Node.js native addons.

Bemærk, at node-gyp ikke bruges til at bygge selve Node.js.

Multiple target versions of Node.js are supported (i.e. 0.8, …, 4, 5, 6,osv.), uanset hvilken version af Node.js der rent faktisk er installeret på dit system (node-gyp downloader de nødvendige udviklingsfiler eller headere til målversionen).

Funktioner

  • De samme byggekommandoer fungerer på alle de understøttede platforme
  • Støtter målretning af forskellige versioner af Node.js

Installation

Du kan installere node-gyp ved hjælp af npm:

npm install -g node-gyp

Afhængigt af dit styresystem skal du installere:

På Unix

  • Python v3.6, v3.7, v3.8 eller v3.9
  • make
  • En ordentlig C/C++ compiler-værktøjskæde, som GCC

På macOS

BEMÆRK: Hvis din Mac er blevet opgraderet til macOS Catalina (10.15), skal du læse macOS_Catalina.md.

  • Python v3.6, v3.7, v3.8, eller v3.9
  • Xcode
    • Du skal også installere XCode Command Line Tools ved at køre xcode-select --install. Alternativt, hvis du allerede har det fulde Xcode installeret, kan du finde dem under menuen Xcode -> Open Developer Tool -> More Developer Tools.... Dette trin installerer clang, clang++ og make.

På Windows

Installer den aktuelle version af Python fra Microsoft Store-pakken.

Installer værktøjer og konfiguration manuelt:

  • Installer Visual C++ Build Environment: Hvis ovenstående trin ikke virkede for dig, kan du besøge Microsofts Node.js-retningslinjer for Windows for at få yderligere tips:
  • Lancer cmd, npm config set msvs_version 2017

Hvis ovenstående trin ikke virkede for dig, kan du besøge Microsofts Node.js-retningslinjer for Windows for at få yderligere tips.

For at målrette native ARM64 Node.js på Windows 10 på ARM skal du tilføje komponenterne “Visual C++ compilers and libraries for ARM64” og “Visual C++ ATL for ARM64”.

Konfigurering af Python-afhængighed

node-gyp kræver, at du har installeret en kompatibel version af Python, en af: v3.6, v3.7,v3.8, eller v3.9. Hvis du har flere Python-versioner installeret, kan du identificere hvilken Pythonversion node-gyp skal bruge på en af følgende måder:

  1. ved at indstille kommandolinjeindstillingen --python, f.eks.:
node-gyp <command> --python /path/to/executable/python
  1. Hvis node-gyp kaldes ved hjælp af npm, og du har flere versioner afPython installeret, kan du indstille npms konfigurationsnøgle ‘python’ til den passendeværdi:

npm config set python /path/to/executable/python
  1. Hvis miljøvariablen PYTHON er indstillet til stien til en eksekverbar Python-fil, vil denne version blive anvendt, hvis det er en kompatibel version.

  2. Hvis miljøvariablen NODE_GYP_FORCE_PYTHON er angivet til stien til en eksekverbarPython-fil, vil den blive anvendt i stedet for en af de andre konfigurerede eller indbyggede Python-søgningsstier. Hvis det ikke er en kompatibel version, vil der ikke blive foretaget yderligere søgning.

Sådan bruges

For at kompilere dit native addon skal du først gå til dets rodmappe:

cd my_node_addon

Det næste trin er at generere de passende projektbygningsfiler til den aktuelle platform. Brug configure til det:

node-gyp configure

Autodetektion mislykkes for Visual C++ Build Tools 2015, så --msvs_version=2015 skal tilføjes (ikke nødvendigt, når det køres af npm som konfigureret ovenfor):

node-gyp configure --msvs_version=2015

Bemærk: Trin configure leder efter en binding.gyp-fil i den aktuellemappe, der skal behandles. Se nedenfor for instruktioner om oprettelse af en binding.gyp-fil.

Nu har du enten en Makefile (på Unix-platforme) eller en vcxproj-fil(på Windows) i build/-mappen. Dernæst påkalder du kommandoen build:

node-gyp build

Nu har du din kompilerede .node bindingsfil! De kompilerede bindinger ender i build/Debug/ eller build/Release/, afhængigt af byggetilstanden. På dette tidspunkt kan du kræve .node-filen med Node.js og køre dine tests!

OBS: Hvis du vil oprette et Debug-byg af bindingsfilen, skal du angive kontakten --debug (eller-d), når du kører enten configure, build eller rebuild-kommandoerne.

Filen binding.gyp

En binding.gyp-fil beskriver konfigurationen til at bygge dit modul i etJSON-lignende format. Denne fil placeres i roden af din pakke sammen medpackage.json.

En barebones gyp fil, der er egnet til opbygning af en Node.json-tilføjelse, kunne se således ud:

{ "targets": } ]}

Yderligere læsning

Nogle yderligere ressourcer til Node.js native addons og skrivning af gyp konfigurationsfiler:

  • “Going Native” a nodeschool.io tutorial
  • “Hello World” node addon example
  • gyp user documentation
  • gyp input format reference
  • “binding.gyp” filer out in the wild wikiside

Kommandoer

node-gyp reagerer på følgende kommandoer:

Kommando Beskrivelse
help Viser dialogboksen for hjælp
build Invokerer make/msbuild.exe og opbygger den native addon
clean Fraser mappen build, hvis den findes
configure Genererer projektopbygningsfiler for den aktuelle platform
rebuild Kører clean, configure og build alle i en række
install Installerer Node.js headerfiler for den givne version
list Lister over de aktuelt installerede Node.js headerversioner
remove Fjerne Node.js headerfiler for den givne version

Kommando-indstillinger

node-gyp accepterer følgende kommando-indstillinger:

Command Description
-j n, --jobs n Kør make parallelt. Værdien max vil bruge alle tilgængelige CPU-kerner
--target=v6.2.1 Node.js version, der skal bygges til (standard er process.version)
--silly, --loglevel=silly Log alle fremskridt til konsollen
--verbose, --loglevel=verbose Log det meste af forløbet til konsollen
--silent, --loglevel=silent Log ikke noget til konsollen
debug, --debug Skab debug build (standard er Release)
--release, --no-debug Skab release build
-C $dir, --directory=$dir Kør kommando i anden mappe
--make=$make Override make kommando (e.f.eks. gmake)
--thin=yes Aktiver tynde statiske biblioteker
--arch=$arch Sæt målarkitektur (f.eks. ia32)
--tarball=$path Henter headers fra en lokal tarball
--devdir=$path SDK-downloadmappe (standard er OS cache-mappen)
--ensure Ingen geninstallation af headere, hvis de allerede er til stede
--dist-url=$url Download header tarball fra brugerdefineret URL
--proxy=$url Sæt HTTP(S)-proxy til download af header tarball
--noproxy=$urls Sæt url’er til at ignorere proxyer ved download af header tarball
--cafile=$cafile Override standard CA-kæde (til download af tarball)
--nodedir=$path Sæt stien til node-kildekoden
--python=$path Sæt stien til Python-binærfilen
--msvs_version=$version Sæt Visual Studio-version (kun Windows)
--solution=$solution Sæt version af Visual Studio-løsning (kun Windows)

Konfiguration

Miljøvariabler

Brug formularen npm_config_OPTION_NAME for en af de kommando-indstillinger, der er anført ovenfor (bindestreger i optionsnavne skal erstattes af understregningstegn).

For eksempel, for at sætte devdir lig med /tmp/.gyp, skal du:

Kør dette på Unix:

export npm_config_devdir=/tmp/.gyp

Og dette på Windows:

set npm_config_devdir=c:\temp\.gyp

npm-konfiguration

Brug formen OPTION_NAME for en af de kommandoindstillinger, der er anført ovenfor.

For eksempel, for at indstille devdir svarende til /tmp/.gyp, skal du køre:

npm config set devdir /tmp/.gyp

Bemærk: Konfiguration indstillet via npm vil kun blive brugt, når node-gyp køres via npm, ikke når node-gyp køres direkte.

Licens

node-gyp er tilgængelig under MIT-licensen. Se LICENSEfilen for nærmere oplysninger.

Leave a Reply