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 Tools
spuš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í gyp
konfigurač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