nodejs / node-gyp
node-gyp
egy Node.js nyelven írt, platformokon átívelő parancssori eszköz a Node.js natív addon modulok Node.js számára történő összeállításához. A korábban a Chromium csapat által használt, a Node.js natív addonok fejlesztésének támogatására kibővített gyp-next projekt eladott másolatát tartalmazza.
Megjegyzendő, hogy a node-gyp
nem használható magának a Node.js-nek a buildelésére.
A Node.js több célverzióját támogatja (pl. 0.8
, …, 4
, 5
, 6
,stb.), függetlenül attól, hogy a Node.js melyik verziója van ténylegesen telepítve a rendszerre(node-gyp
letölti a célverzióhoz szükséges fejlesztési fájlokat vagy fejléceket).
Jellemzők
- Az azonos build parancsok a támogatott platformok bármelyikén működnek
- Támogatja a Node különböző verzióinak megcélzását.js
Telepítés
Telepítheti node-gyp
a npm
segítségével:
npm install -g node-gyp
Az operációs rendszertől függően telepíteni kell:
Unixon
- Python v3.6, v3.7, v3.8 vagy v3.9
make
- Egy megfelelő C/C++ fordító eszköztárat, például a GCC-t
MacOS-en
FIGYELEM: Ha a Mac-jét frissítették a macOS Catalina (10.15), kérjük, olvassa el a macOS_Catalina.md.
- Python v3.6, v3.7, v3.8 vagy v3.9
- Xcode
- Az
XCode Command Line Tools
telepítését is el kell végeznie axcode-select --install
futtatásával. Alternatívaként, ha már telepítetted a teljes Xcode-ot, akkor aXcode -> Open Developer Tool -> More Developer Tools...
menüpont alatt találod őket. Ezzel a lépéssel aclang
,clang++
ésmake
telepíthető.
- Az
Windowson
Telepítse a Python aktuális verzióját a Microsoft Store csomagból.
Az eszközök és a konfiguráció manuális telepítése:
- Telepítse a Visual C++ Build Environment: Visual Studio Build Tools(a “Visual C++ build tools” munkaterület használatával) vagy Visual Studio 2017 Community(a “Desktop development with C++” munkaterület használatával)
- Launch cmd,
npm config set msvs_version 2017
Ha a fenti lépések nem váltak be Önnek, további tippekért látogasson el a Microsoft Node.js Guidelines for Windows oldalára.
A natív ARM64 Node.js megcélzásához a Windows 10 ARM rendszeren a “Visual C++ compilers and libraries for ARM64” és a “Visual C++ ATL for ARM64” komponensek hozzáadása.
Python-dependencia konfigurálása
node-gyp
megköveteli, hogy a Python kompatibilis verzióját telepítse, a következők egyikét: v3.6, v3.7,v3.8 vagy v3.9. Ha több Python-verzió van telepítve, akkor a következő módokon határozhatja meg, hogy melyik Pythonverziót node-gyp
kell használnia:
- a
--python
parancssori opció beállításával, például.:
node-gyp <command> --python /path/to/executable/python
- Ha a
node-gyp
anpm
segítségével kerül meghívásra, és aPython több verziója van telepítve, akkor anpm
‘python’ config kulcsát a megfelelőértékre állíthatja:
npm config set python /path/to/executable/python
-
Ha a
PYTHON
környezeti változó egy Python futtatható program elérési útvonalára van beállítva,akkor az a verzió lesz használva, ha az egy kompatibilis verzió. -
Ha a
NODE_GYP_FORCE_PYTHON
környezeti változó egyPython futtatható fájl elérési útvonalára van beállítva, akkor azt fogja használni a rendszer bármely más konfigurált vagy beépített Python keresési útvonal helyett. Ha ez nem kompatibilis verzió, akkor nem történik további keresés.
Használat
A natív addon lefordításához először menjen a gyökérkönyvtárába:
cd my_node_addon
A következő lépés az aktuálisplatformnak megfelelő projekt build fájlok generálása. Ehhez használja a configure
-t:
node-gyp configure
A Visual C++ Build Tools 2015 esetében az automatikus felismerés sikertelen, ezért a --msvs_version=2015
et hozzá kell adni (nem szükséges, ha a fentiek szerint konfigurált npm futtatja):
node-gyp configure --msvs_version=2015
Megjegyzés: A configure
lépés egy binding.gyp
fájlt keres az aktuáliskönyvtárban a feldolgozáshoz. A binding.gyp
fájl létrehozására vonatkozó utasításokat lásd alább.
Most már vagy egy Makefile
(Unix platformokon) vagy egy vcxproj
fájl (Windowson) lesz a build/
könyvtárban. Ezután hívd meg a build
parancsot:
node-gyp build
Most már megvan a lefordított .node
kötőfájlod! A lefordított kötések a build/Debug/
vagy a build/Release/
fájlban végződnek, a build módtól függően. Ezen a ponton megkövetelheti a .node
fájlt a Node.js segítségével, és futtathatja a teszteket!
Megjegyzés: A kötésfájl Debug buildjének létrehozásához adja át a --debug
(vagy-d
) kapcsolót a configure
, build
vagy rebuild
parancsok futtatásakor.
A binding.gyp fájl
A binding.gyp
fájl egy JSON-szerű formátumban leírja a modul építéséhez szükséges konfigurációt. Ez a fájl a csomagod gyökerében kerül elhelyezésre, apackage.json
mellett.
Egy Node.js addon építéséhez megfelelő csupasz gyp
fájl így nézhet ki:
{ "targets": } ]}
További olvasmányok
Egy pár további forrás a Node.js natív addonok és gyp
konfigurációs fájlok írásához:
- “Going Native” a nodeschool.io tutorial
- “Hello World” node addon példa
- gyp felhasználói dokumentáció
- gyp input formátum referencia
- “binding.gyp” files out in the wild wiki oldal
Parancsok
node-gyp
a következő parancsokra válaszol:
Command | Description |
---|---|
help |
megjeleníti a súgó párbeszédablakot |
build |
Invokálja a make /msbuild.exe és felépíti a natívot. addon |
clean |
Eltávolítja a build könyvtárat, ha létezik |
configure |
Generálja a projekt építési fájljait az aktuális platformhoz |
rebuild |
Futtatja a clean , configure és build egymás után |
install |
Installálja a Node.js fejlécfájlokat az adott verzióhoz |
list |
Listázza a jelenleg telepített Node.js fejlécverziókat |
remove |
Eltávolítja a Node.js fejlécfájlokat az adott verzióhoz |
Parancsopciók
node-gyp
A következő parancsopciókat fogadja el:
Command | Description |
---|---|
-j n , --jobs n |
Run make in parallel. A max érték az összes rendelkezésre álló processzormagot használja |
--target=v6.2.1 |
Node.js verzió, amelyre építeni kell (alapértelmezett process.version ) |
--silly , --loglevel=silly |
Naplózza az összes előrehaladást a konzolra |
--verbose , --loglevel=verbose |
Naplózza a legtöbb haladást a konzolra |
--silent , --loglevel=silent |
Nem naplóz semmit a konzolra |
debug , --debug |
Make Debug build (alapértelmezett Release ) |
--release , --no-debug |
Make Release build |
-C $dir , --directory=$dir |
Parancs futtatása más könyvtárban |
--make=$make |
Override make parancs (e.pl. gmake ) |
--thin=yes |
Enable thin static libraries |
--arch=$arch |
Set target architecture (pl. ia32) |
--tarball=$path |
Fejlécek letöltése helyi tarballból |
--devdir=$path |
SDK letöltési könyvtár. (alapértelmezett az OS cache könyvtár) |
--ensure |
Ne telepítse újra a fejléceket, ha már megvannak |
--dist-url=$url |
Letöltse le a fejlécek tarballját egyéni URL-ről |
--proxy=$url |
HTTP(S) proxy beállítása a fejlécek tarballjának letöltéséhez |
--noproxy=$urls |
Urlok beállítása a proxyk figyelmen kívül hagyására a fejlécek tarballjának letöltésekor |
--cafile=$cafile |
Felülbírálja. default CA chain (to download tarball) |
--nodedir=$path |
Set the path to the node source code |
--python=$path |
Set the path to the Python binary |
--msvs_version=$version |
Set Visual Studio version (csak Windows) |
--solution=$solution |
Set Visual Studio Solution version (csak Windows) |
Configuration
Environment variables
A fenti parancsopciók bármelyikéhez a npm_config_OPTION_NAME
formát használja (az opciónevekben a kötőjeleket aláhúzással kell helyettesíteni).
Az devdir
/tmp/.gyp
értékének beállításához például:
Futtassa ezt Unixon:
export npm_config_devdir=/tmp/.gyp
Vagy ezt Windowson:
set npm_config_devdir=c:\temp\.gyp
npm configuration
A fent felsorolt parancsopciók bármelyikéhez használja a OPTION_NAME
formát.
Az devdir
/tmp/.gyp
-nek megfelelő beállításához például:
npm config set devdir /tmp/.gyp
Figyelem: A npm
segítségével beállított konfiguráció csak a node-gyp
npm
-on keresztül történő futtatásakor kerül felhasználásra, a node-gyp
közvetlen futtatásakor nem.
Licenc
node-gyp
a MIT licenc alatt érhető el. A részletekért lásd a LICENSEfile-t.
Leave a Reply