nodejs / node-gyp

Build Status

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 rularea xcode-select --install. Alternativ, dacă aveți deja instalat Xcode complet, le puteți găsi în meniul Xcode -> Open Developer Tool -> More Developer Tools.... Acest pas va instala clang, clang++ și make.

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:

  1. prin setarea opțiunii din linia de comandă --python, de ex.:

node-gyp <command> --python /path/to/executable/python
  1. Dacă node-gyp este apelat prin intermediul lui npm și aveți instalate mai multe versiuni dePython, atunci puteți seta cheia de configurare „python” a lui npm la valoarea corespunzătoare:
npm config set python /path/to/executable/python
  1. 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ă.

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