nodejs / node-gyp

Build Status

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 a xcode-select --install futtatásával. Alternatívaként, ha már telepítetted a teljes Xcode-ot, akkor a Xcode -> Open Developer Tool -> More Developer Tools... menüpont alatt találod őket. Ezzel a lépéssel a clang, clang++ és make telepíthető.

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:

  1. a --python parancssori opció beállításával, például.:
node-gyp <command> --python /path/to/executable/python

  1. Ha a node-gyp a npm segítségével kerül meghívásra, és aPython több verziója van telepítve, akkor a npm ‘python’ config kulcsát a megfelelőértékre állíthatja:
npm config set python /path/to/executable/python
  1. 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ó.

  2. 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=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