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 Toolstelepítését is el kell végeznie axcode-select --installfuttatá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++ésmaketelepí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
--pythonparancssori opció beállításával, például.:
node-gyp <command> --python /path/to/executable/python
- Ha a
node-gypanpmsegí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
PYTHONkö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_PYTHONkö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=2015et 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