nodejs / node-gyp
node-gyp
è uno strumento a riga di comando multipiattaforma scritto in Node.js per compilare moduli addon nativi per Node.js. Contiene una copia venduta del progettogyp-next che era precedentemente usato dal team Chromium, esteso per supportare lo sviluppo di addon nativi per Node.js.
Nota che node-gyp
non è usato per compilare Node.js stesso.
Sono supportate più versioni target di Node.js (cioè 0.8
, …, 4
, 5
, 6
, ecc.), indipendentemente dalla versione di Node.js effettivamente installata sul tuo sistema (node-gyp
scarica i file di sviluppo o gli header necessari per la versione di destinazione).
Caratteristiche
- Gli stessi comandi di compilazione funzionano su qualsiasi piattaforma supportata
- Supporta il targeting di diverse versioni di Node.js
Installazione
Puoi installare node-gyp
usando npm
:
npm install -g node-gyp
A seconda del tuo sistema operativo, dovrai installare:
Su Unix
- Python v3.6, v3.7, v3.8 o v3.9
make
- Un compilatore C/C++ adeguato, come GCC
Su macOS
ATTENZIONE: Se il vostro Mac è stato aggiornato a macOS Catalina (10.15), leggi macOS_Catalina.md.
- Python v3.6, v3.7, v3.8, o v3.9
- Xcode
- È inoltre necessario installare il
XCode Command Line Tools
eseguendoxcode-select --install
. In alternativa, se hai già installato l’intero Xcode, puoi trovarli sotto il menuXcode -> Open Developer Tool -> More Developer Tools...
. Questo passo installeràclang
,clang++
, emake
.
- È inoltre necessario installare il
Su Windows
Installa la versione corrente di Python dal pacchetto Microsoft Store.
Installa gli strumenti e la configurazione manualmente:
- Installa Visual C++ Build Environment: Visual Studio Build Tools (usando il carico di lavoro “Visual C++ build tools”) o Visual Studio 2017 Community (usando il carico di lavoro “Desktop development with C++”)
- Lancia cmd,
npm config set msvs_version 2017
Se i passaggi precedenti non hanno funzionato per te, visita le Microsoft’s Node.js Guidelines for Windows per ulteriori suggerimenti.
Per puntare al Node.js nativo ARM64 su Windows 10 on ARM, aggiungi i componenti “Visual C++ compilatori e librerie per ARM64” e “Visual C++ ATL per ARM64”.
Configurare la dipendenza da Python
node-gyp
richiede che tu abbia installato una versione compatibile di Python, una delle seguenti: v3.6, v3.7,v3.8, o v3.9. Se hai più versioni di Python installate, puoi identificare quale versione di Python node-gyp
deve essere usata in uno dei seguenti modi:
- impostando l’opzione
--python
della riga di comando, ad esempio:
node-gyp <command> --python /path/to/executable/python
- Se
node-gyp
è chiamato tramitenpm
, e avete più versioni di Python installate, allora potete impostare la chiave di configurazione ‘python’ dinpm
al valore appropriato:
npm config set python /path/to/executable/python
-
Se la variabile d’ambiente
PYTHON
è impostata sul percorso di un eseguibile Python, allora verrà usata quella versione, se è una versione compatibile. -
Se la variabile d’ambiente
NODE_GYP_FORCE_PYTHON
è impostata sul percorso di un eseguibile Python, verrà usata al posto di qualsiasi altro percorso di ricerca Python configurato o incorporato. Se non è una versione compatibile, non verrà effettuata alcuna ricerca.
Come usare
Per compilare il tuo addon nativo, prima vai alla sua directory principale:
cd my_node_addon
Il prossimo passo è generare i file di build del progetto appropriati per la piattaforma corrente. Usa configure
per questo:
node-gyp configure
Il rilevamento automatico non riesce per Visual C++ Build Tools 2015, quindi è necessario aggiungere --msvs_version=2015
(non necessario se eseguito da npm come configurato sopra):
node-gyp configure --msvs_version=2015
Nota: Il passo configure
cerca un file binding.gyp
nella directory corrente da elaborare. Vedi sotto per le istruzioni su come creare un file binding.gyp
.
Ora avrai un file Makefile
(su piattaforme Unix) o un file vcxproj
(su Windows) nella directory build/
. Poi, invoca il comando build
:
node-gyp build
Ora hai il tuo file di binding .node
compilato! I binding compilati finiscono in build/Debug/
o build/Release/
, a seconda della modalità di compilazione. A questo punto, puoi richiedere il file .node
con Node.js ed eseguire i tuoi test!
Nota: Per creare una build di debug del file di binding, passa lo switch --debug
(o-d
) quando esegui i comandi configure
, build
o rebuild
.
Il file binding.gyp
Un file binding.gyp
descrive la configurazione per costruire il tuo modulo, in formato JSON. Questo file viene messo nella radice del tuo pacchetto, insieme apackage.json
.
Un file gyp
spoglio appropriato per costruire un addon di Node.js potrebbe assomigliare a:
{ "targets": } ]}
Altre letture
Alcune risorse aggiuntive per i componenti aggiuntivi di Node.js e la scrittura di gyp
file di configurazione:
- “Going Native” un tutorial di nodeschool.io
- “Hello World” node addon di esempio
- documentazione utente gyp
- riferimento al formato di input gyp
- “binding.gyp” file out in the wild wiki page
Comandi
node-gyp
risponde ai seguenti comandi:
Comando | Descrizione |
---|---|
help |
Mostra il dialogo di aiuto |
build |
Invoca make /msbuild.exe e costruisce il nativo addon |
clean |
Rimuove la directory build se esiste |
configure |
Genera i file di build del progetto per la piattaforma corrente |
rebuild |
Esegue clean , configure e build tutti in fila |
install |
Installa i file header di Node.js per la versione data |
list |
Lista le versioni di header di Node.js attualmente installate |
remove |
Rimuove i file header di Node.js per la versione data |
Opzioni di comando
node-gyp
accetta le seguenti opzioni di comando:
Comando | Descrizione |
---|---|
-j n , --jobs n |
Run make in parallelo. Il valore max userà tutti i core di CPU disponibili |
--target=v6.2.1 |
Node.js (il valore predefinito è process.version ) |
--silly , --loglevel=silly |
Log di tutti i progressi su console |
--verbose , --loglevel=verbose |
Log della maggior parte dei progressi alla console |
--silent , --loglevel=silent |
Non registrare nulla alla console |
debug , --debug |
Fai il Debug build (predefinito è Release ) |
--release , --no-debug |
Fai il Release build |
-C $dir , --directory=$dir |
Esegui il comando in un’altra directory |
--make=$make |
Sovrascrivi il comando make (es.gmake ) |
--thin=yes |
Abilita le librerie statiche sottili |
--arch=$arch |
Imposta l’architettura di destinazione (es. ia32) |
--tarball=$path |
Ottieni gli header da un tarball locale |
--devdir=$path |
Direttore download SDK (l’impostazione predefinita è la cartella della cache del sistema operativo) |
--ensure |
Non reinstallare le intestazioni se già presenti |
--dist-url=$url |
Scarica il tarball delle intestazioni da un URL personalizzato |
--proxy=$url |
Imposta il proxy HTTP(S) per scaricare il tarball delle intestazioni |
--noproxy=$urls |
Imposta gli URL per ignorare i proxy quando scarica il tarball delle intestazioni |
--cafile=$cafile |
Supera catena CA predefinita (per scaricare il tarball) |
--nodedir=$path |
Imposta il percorso del codice sorgente del nodo |
--python=$path |
Imposta il percorso del binario Python |
--msvs_version=$version |
Imposta la versione di Visual Studio (solo Windows) |
--solution=$solution |
Imposta la versione di Visual Studio Solution (solo Windows) |
Configurazione
Variabili d’ambiente
Usa la forma npm_config_OPTION_NAME
per qualsiasi opzione di comando elencata sopra (i trattini nei nomi delle opzioni dovrebbero essere sostituiti da trattini bassi).
Per esempio, per impostare devdir
uguale a /tmp/.gyp
, dovresti:
Esegui questo su Unix:
export npm_config_devdir=/tmp/.gyp
O questo su Windows:
set npm_config_devdir=c:\temp\.gyp
npm configuration
Usa la forma OPTION_NAME
per qualsiasi opzione di comando elencata sopra.
Per esempio, per impostare devdir
uguale a /tmp/.gyp
, dovresti eseguire:
npm config set devdir /tmp/.gyp
Nota: La configurazione impostata tramite npm
sarà usata solo quando node-gyp
viene eseguito tramite npm
, non quando node-gyp
viene eseguito direttamente.
Licenza
node-gyp
è disponibile sotto licenza MIT. Vedere il file LICENSE per i dettagli.
Leave a Reply