nodejs / node-gyp
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 Toolsspuštěnímxcode-select --install. Případně, pokud již máte nainstalovaný plný Xcode, najdete je v nabídceXcode -> Open Developer Tool -> More Developer Tools.... Tímto krokem nainstalujeteclang,clang++amake.
- Musíte také nainstalovat
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ů:
- nastavením volby příkazového řádku
--python, např.:
node-gyp <command> --python /path/to/executable/python
- 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
-
Je-li proměnná prostředí PYTHON nastavena na cestu ke spustitelnému souboru Pythonu,pak se použije tato verze, pokud je kompatibilní.
-
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
--python, např.:node-gyp <command> --python /path/to/executable/python
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
Je-li proměnná prostředí PYTHON nastavena na cestu ke spustitelnému souboru Pythonu,pak se použije tato verze, pokud je kompatibilní.
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í.
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