nodejs / node-gyp

Stav sestavení

node-gyp je multiplatformní nástroj příkazového řádku napsaný v Node.js prokompilování nativních modulů doplňků pro Node.js. Obsahuje vendored kopii projektugyp-next, který dříve používal tým Chromium, rozšířenou o podporu vývoje nativních doplňků pro Node.js.

Všimněte si, že node-gyp neslouží k sestavování samotného Node.js.

Podporováno je více cílových verzí Node.js (tj. 0.8, …, 4, 5, 6,atd.) bez ohledu na to, jaká verze Node.js je v systému skutečně nainstalována (node-gyp stáhne potřebné vývojové soubory nebo hlavičky pro cílovou verzi).

Vlastnosti

  • Stejné příkazy sestavení fungují na kterékoli z podporovaných platforem
  • Podporuje cílení na různé verze Node.js

Instalace

Můžete nainstalovat node-gyp pomocí npm:

npm install -g node-gyp

V závislosti na operačním systému budete muset nainstalovat:

Na Unixu

  • Python v3.6, v3.7, v3.8 nebo v3.9
  • make
  • Vhodný řetězec nástrojů pro překladač jazyka C/C++, například GCC

V systému MacOS

Upozornění: Pokud byl váš Mac aktualizován na systém macOS Catalina (10.15), přečtěte si prosím macOS_Catalina.md.

  • Python v3.6, v3.7, v3.8 nebo v3.9
  • Xcode
    • Musíte také nainstalovat XCode Command Line Tools spuštěním xcode-select --install. Případně, pokud již máte nainstalovaný plný Xcode, najdete je v nabídce Xcode -> Open Developer Tool -> More Developer Tools.... Tímto krokem nainstalujete clang, clang++ a make.

V systému Windows

Instalace aktuální verze Pythonu z balíčku Microsoft Store.

Ruční instalace nástrojů a konfigurace:

  • Instalace prostředí Visual C++ Build Environment: Nástroje pro sestavení Visual Studio (pomocí pracovní zátěže „Nástroje pro sestavení Visual C++“) nebo Visual Studio 2017 Community (pomocí pracovní zátěže „Desktopový vývoj s C++“)
  • Spustit cmd, npm config set msvs_version 2017

Pokud vám výše uvedené kroky nefungovaly, navštivte prosím Pokyny společnosti Microsoft pro Node.js pro systém Windows, kde najdete další tipy.

Chcete-li cílit na nativní ARM64 Node.js v systému Windows 10 na platformě ARM, přidejte komponenty „Visual C++ compilers and libraries for ARM64“ a „Visual C++ ATL for ARM64“.

Konfigurace závislostí Pythonu

node-gyp vyžaduje, abyste měli nainstalovanou kompatibilní verzi Pythonu, jednu z těchto verzí: v3.6, v3.7,v3.8 nebo v3.9.

. Pokud máte nainstalováno více verzí Pythonu, můžete určit, která verze Pythonu node-gyp se má použít, jedním z následujících způsobů:

  1. nastavením volby příkazového řádku --python, např.:
node-gyp <command> --python /path/to/executable/python
  1. Pokud je node-gyp volán prostřednictvím npm a máte nainstalováno více verzíPythonu, pak můžete nastavit konfigurační klíč npm ‚python‘ na příslušnouhodnotu:
npm config set python /path/to/executable/python
  1. Je-li proměnná prostředí PYTHON nastavena na cestu ke spustitelnému souboru Pythonu,pak se použije tato verze, pokud je kompatibilní.

  2. Jestliže je proměnná prostředí NODE_GYP_FORCE_PYTHON nastavena na cestu ke spustitelnému souboru Pythonu, bude tato verze použita namísto některé z ostatních nakonfigurovaných nebo zabudovaných vyhledávacích cest Pythonu. Pokud se nejedná o kompatibilní verzi, nebude provedeno žádné další vyhledávání.

Jak používat

Pro kompilaci nativního doplňku nejprve přejděte do jeho kořenového adresáře:

cd my_node_addon

Dalším krokem je vygenerování příslušných souborů pro sestavení projektu pro aktuálníplatformu. K tomu použijte configure:

node-gyp configure

Autodetekce selhává pro Visual C++ Build Tools 2015, takže je třeba přidat --msvs_version=2015(není potřeba při spuštění pomocí npm podle výše uvedené konfigurace):

node-gyp configure --msvs_version=2015

Poznámka: Krok configure hledá v aktuálnímadresáři soubor binding.gyp, který má zpracovat. Pokyny k vytvoření souboru binding.gyp naleznete níže.

Nyní budete mít v adresáři build/ buď soubor Makefile (na platformách Unix), nebo vcxproj(na platformách Windows). Dále spusťte příkaz build:

node-gyp build

Teď máte zkompilovaný soubor vazeb .node! Zkompilované vazby končív build/Debug/ nebo build/Release/, v závislosti na režimu sestavení. V tuto chvíli můžete soubor .node vyžadovat pomocí Node.js a spustit své testy!

Poznámka: Chcete-li vytvořit sestavení souboru vazeb v režimu Debug, předejte při spuštění příkazů configure, build nebo rebuild přepínač --debug (nebo-d).

Soubor binding.gyp

Soubor binding.gyp popisuje konfiguraci pro sestavení vašeho modulu ve formátu podobnémJSON. Tento soubor se umístí do kořenového adresáře vašeho balíčku spolu se souborempackage.json.

Základní gyp soubor vhodný pro sestavení doplňku Node.js může vypadat takto:

{ "targets": } ]}

Další čtení

Několik dalších zdrojů pro Node.js nativních doplňků a psaní gypkonfiguračních souborů:

  • „Going Native“ a nodeschool.io tutorial
  • „Hello World“ node addon example
  • gyp user documentation
  • gyp input format reference
  • „binding.gyp“ soubory out in the wild wiki page

Příkazy

node-gyp reaguje na následující příkazy:

Příkaz Popis
help Zobrazí dialogové okno nápovědy
build Vyvolá make/msbuild.exe a sestaví nativní kód. addon
clean Odstraní adresář build, pokud existuje
configure Vytvoří soubory pro sestavení projektu pro aktuální platformu
rebuild Spustí clean, configure a build vše za sebou
install Instaluje uzel.js hlavičkové soubory pro danou verzi
list Seznam aktuálně nainstalovaných verzí hlaviček Node.js
remove Odstraní hlavičky Node.js hlavičkové soubory pro danou verzi

Možnosti příkazu

node-gyp akceptuje následující možnosti příkazu:

.

Příkaz Popis
-j n, --jobs n Spustit make paralelně. Hodnota max využije všechna dostupná jádra procesoru
--target=v6.2.1 Node.js verze, pro kterou se má sestavovat (výchozí je process.version)
--silly, --loglevel=silly Zaznamenávat veškerý průběh do konzole
--verbose, --loglevel=verbose Zaznamenat většinu postupu do konzoly
--silent, --loglevel=silent Nezaznamenávat nic do konzoly
debug, --debug Provádět sestavení Debug (výchozí je Release)
--release, --no-debug Provádět sestavení Release
-C $dir, --directory=$dir Spustit příkaz v jiném adresáři
--make=$make Přepsat příkaz make (např.např. gmake)
--thin=yes Povolit tenké statické knihovny
--arch=$arch Nastavit cílovou architekturu (např. ia32)
--tarball=$path Získat hlavičky z místního tarballu
--devdir=$path Adresář pro stažení SDK. (výchozí je adresář mezipaměti OS)
--ensure Nepřeinstalovávat hlavičky, pokud jsou již přítomny
--dist-url=$url Stáhnout tarball hlaviček z vlastní adresy URL
--proxy=$url Nastavit HTTP(S) proxy pro stahování tarballu hlaviček
--noproxy=$urls Nastavit adresy URL tak, aby ignorovaly proxy při stahování tarballu hlaviček
--cafile=$cafile Přepsat výchozí řetězec CA (pro stažení tarballu)
--nodedir=$path Nastavení cesty ke zdrojovému kódu uzlu
--python=$path Nastavení cesty k binárnímu kódu Pythonu
--msvs_version=$version Nastavení verze Visual Studio (pouze Windows)
--solution=$solution Nastavit verzi řešení Visual Studio (pouze pro Windows)

Konfigurace

Proměnné prostředí

Pro kteroukoli z výše uvedených možností příkazu použijte tvar npm_config_OPTION_NAME (pomlčky v názvech možností by měly být nahrazeny podtržítky).

Například pro nastavení devdir rovné /tmp/.gyp byste:

V systému Unix spustili toto:

export npm_config_devdir=/tmp/.gyp

Nebo toto v systému Windows:

set npm_config_devdir=c:\temp\.gyp

konfigurace npm

Pro kteroukoli z výše uvedených možností příkazu použijte tvar OPTION_NAME.

Příklad pro nastavení devdir rovné /tmp/.gyp byste spustili:

npm config set devdir /tmp/.gyp

Poznámka: Konfigurace nastavená prostřednictvím npm se použije pouze při spuštění node-gyp prostřednictvím npm, nikoli při přímém spuštění node-gyp.

Licence

node-gyp je k dispozici pod licencí MIT. Podrobnosti najdete v souboru LICENSE.

Leave a Reply