nodejs / node-gyp
node-gyp
este un instrument de linie de comandă cross-platform scris în Node.js pentrucompilarea modulelor addon native pentru Node.js. Acesta conține o copie vândută a proiectuluigyp-next care a fost folosit anteriorde către echipa Chromium, extins pentru a sprijini dezvoltarea de addon-uri native Node.js.
Rețineți că node-gyp
nu este folosit pentru a construi Node.js în sine.
Sunt acceptate mai multe versiuni țintă ale Node.js (adică 0.8
, …, 4
, 5
, 6
,etc.), indiferent ce versiune de Node.js este instalată efectiv pe sistemul dvs.(node-gyp
descarcă fișierele de dezvoltare sau anteturile necesare pentru versiunea țintă).
Caracteristici
- Aceleași comenzi de compilare funcționează pe oricare dintre platformele suportate
- Suportă direcționarea către diferite versiuni de Node.js
Instalare
Puteți instala node-gyp
folosind npm
:
npm install -g node-gyp
În funcție de sistemul dvs. de operare, va trebui să instalați:
Pe Unix
- Python v3.6, v3.7, v3.8, sau v3.9
make
- Un lanț de instrumente de compilare C/C++ adecvat, cum ar fi GCC
Pe macOS
ATENȚIE: Dacă Mac-ul dvs. a fost actualizat la macOS Catalina (10.15), vă rugăm să citiți macOS_Catalina.md.
- Python v3.6, v3.7, v3.8, sau v3.9
- Xcode
- De asemenea, trebuie să instalați
XCode Command Line Tools
prin rulareaxcode-select --install
. Alternativ, dacă aveți deja instalat Xcode complet, le puteți găsi în meniulXcode -> Open Developer Tool -> More Developer Tools...
. Acest pas va instalaclang
,clang++
șimake
.
- De asemenea, trebuie să instalați
Pe Windows
Instalează versiunea curentă de Python din pachetul Microsoft Store.
Instalează manual instrumentele și configurația:
- Instalează Visual C++ Build Environment: Visual Studio Build Tools (utilizând volumul de lucru „Visual C++ build tools”) sau Visual Studio 2017 Community (utilizând volumul de lucru „Desktop development with C++”)
- Lansați cmd,
npm config set msvs_version 2017
Dacă pașii de mai sus nu au funcționat pentru dumneavoastră, vă rugăm să vizitați Microsoft’s Node.js Guidelines for Windows pentru sfaturi suplimentare.
Pentru a viza Node.js nativ ARM64 pe Windows 10 pe ARM, adăugați componentele „Visual C++ compilers and libraries for ARM64” și „Visual C++ ATL for ARM64”.
Configurarea dependenței Python
node-gyp
necesită să aveți instalată o versiune compatibilă de Python, una dintre: v3.6, v3.7,v3.8 sau v3.9. Dacă aveți instalate mai multe versiuni Python, puteți identifica ce versiune Python node-gyp
trebuie să utilizați într-unul din următoarele moduri:
- prin setarea opțiunii din linia de comandă
--python
, de ex.:
node-gyp <command> --python /path/to/executable/python
- Dacă
node-gyp
este apelat prin intermediul luinpm
și aveți instalate mai multe versiuni dePython, atunci puteți seta cheia de configurare „python” a luinpm
la valoarea corespunzătoare:
npm config set python /path/to/executable/python
-
Dacă variabila de mediu
PYTHON
este setată la calea de acces a unui executabil Python, atunci va fi utilizată versiunea respectivă, dacă este o versiune compatibilă. -
Dacă variabila de mediu
NODE_GYP_FORCE_PYTHON
este setată la calea unui executabilPython, aceasta va fi utilizată în locul oricăreia dintre celelalte căi de căutare Python configurate saubuiltin. Dacă nu este o versiune compatibilă, nu se va face nici o altă căutare.
Cum se utilizează
Pentru a compila addon-ul nativ, mergeți mai întâi în directorul rădăcină al acestuia:
cd my_node_addon
Postul următor este de a genera fișierele de compilare a proiectului adecvate pentru platforma curentă. Folosiți configure
pentru asta:
node-gyp configure
Autodetecția eșuează pentru Visual C++ Build Tools 2015, așa că trebuie adăugat --msvs_version=2015
(nu este necesar atunci când este rulat de npm, așa cum este configurat mai sus):
node-gyp configure --msvs_version=2015
Nota: Pasul configure
caută un fișier binding.gyp
în directorul curent pentru a-l procesa. A se vedea mai jos pentru instrucțiuni privind crearea unui fișier binding.gyp
.
Acum veți avea fie un fișier Makefile
(pe platformele Unix), fie un fișier vcxproj
(pe Windows) în directorul build/
. În continuare, invocați comanda build
:
node-gyp build
Acum aveți fișierul de bindings .node
compilat! Legăturile compilate se termină în build/Debug/
sau build/Release/
, în funcție de modul de compilare. În acest moment,puteți solicita fișierul .node
cu Node.js și să vă executați testele!
Nota: Pentru a crea o compilare Debug a fișierului bindings, treceți comutatorul --debug
(sau-d
) atunci când executați fie comenzile configure
, build
sau rebuild
.
Fișierul binding.gyp
Un fișier binding.gyp
descrie configurația pentru a vă construi modulul, într-un format de tip JSON. Acest fișier se plasează în rădăcina pachetului dumneavoastră, alături depackage.json
.
Un fișier de bază gyp
adecvat pentru construirea unui addon Node.js ar putea arăta astfel:
{ "targets": } ]}
Lecturi suplimentare
Câteva resurse suplimentare pentru Node.js native addon-uri și scrierea gyp
fișierelor de configurare:
- „Going Native” un tutorial nodeschool.io
- „Hello World” node addon exemplu
- documentație utilizator gip
- gip referință format de intrare gip
- „binding.gyp” files out in the wild wiki page
Comenzi
node-gyp
răspunde la următoarele comenzi:
Comandă | Descriere |
---|---|
help |
Afișează dialogul de ajutor |
build |
Invoacă make /msbuild.exe și construiește fișierul nativ. addon |
clean |
Îndepărtează directorul build dacă acesta există |
configure |
Generează fișierele de construire a proiectului pentru platforma curentă |
rebuild |
Execută clean , configure și build toate la rând |
install |
Instalează Node.js pentru versiunea dată |
list |
Întocmește lista versiunilor de antet Node.js instalate în prezent |
remove |
Înlătură fișierele de antet Node.js pentru versiunea dată |
Opțiuni de comandă
node-gyp
acceptă următoarele opțiuni de comandă:
Comandă | Descriere | |
---|---|---|
-j n , --jobs n |
Executați make în paralel. Valoarea max va utiliza toate nucleele CPU disponibile |
|
--target=v6.2.1 |
Nod.js version to build for (default is process.version ) |
|
--silly , --loglevel=silly |
Log all progress to console | |
--verbose , --loglevel=verbose |
Registrează majoritatea progreselor în consolă | |
--silent , --loglevel=silent |
Nu înregistrează nimic în consolă | |
debug , --debug |
Make Debug build (implicit este Release ) |
|
--release , --no-debug |
Make Release build | |
-C $dir , --directory=$dir |
Executați comanda în alt director | |
--make=$make |
Înlocuiți comanda make (de ex.g. gmake ) |
|
--thin=yes |
Activați bibliotecile statice subțiri | |
--arch=$arch |
Setați arhitectura țintă (de ex. ia32) | |
--tarball=$path |
Get headers from a local tarball | |
--devdir=$path |
Director de descărcare SDK (implicit este directorul cache al sistemului de operare) | |
--ensure |
Nu reinstalați anteturile dacă sunt deja prezente | |
--dist-url=$url |
Download header tarball from custom URL | |
--proxy=$url |
Set HTTP(S) proxy for downloading header tarball | |
--noproxy=$urls |
Set urls to ignore proxies when downloading header tarball | |
--cafile=$cafile |
Override default CA chain (pentru a descărca tarball) | |
--nodedir=$path |
Setați calea către codul sursă al nodului | |
--python=$path |
Setați calea către binarul Python | |
--msvs_version=$version |
Setați versiunea Visual Studio (numai pentru Windows) | |
--solution=$solution |
Set Visual Studio Solution version (numai pentru Windows) |
Configuration
Environment variables
Utilizați forma npm_config_OPTION_NAME
pentru oricare dintre opțiunile de comandă enumerate mai sus (liniuțele din numele opțiunilor trebuie înlocuite cu caractere de subliniere).
De exemplu, pentru a seta devdir
egal cu /tmp/.gyp
, ar trebui:
Executați acest lucru pe Unix:
export npm_config_devdir=/tmp/.gyp
Sau acest lucru pe Windows:
set npm_config_devdir=c:\temp\.gyp
Configurație npm
Utilizați forma OPTION_NAME
pentru oricare dintre opțiunile de comandă enumerate mai sus.
De exemplu, pentru a seta devdir
egal cu /tmp/.gyp
, veți rula:
npm config set devdir /tmp/.gyp
Rețineți: Configurația setată prin npm
va fi utilizată numai atunci când node-gyp
este rulat prin npm
, nu și atunci când node-gyp
este rulat direct.
Licență
node-gyp este disponibil sub licența MIT. Consultați fișierul LICENȚĂ pentru detalii.
Leave a Reply