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 Toolseseguendoxcode-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
--pythondella 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’ dinpmal 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