nodejs / node-gyp

Build Status

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 eseguendo xcode-select --install. In alternativa, se hai già installato l’intero Xcode, puoi trovarli sotto il menu Xcode -> Open Developer Tool -> More Developer Tools.... Questo passo installerà clang, clang++, e make.

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:

  1. impostando l’opzione --python della riga di comando, ad esempio:
node-gyp <command> --python /path/to/executable/python

  1. Se node-gyp è chiamato tramite npm, e avete più versioni di Python installate, allora potete impostare la chiave di configurazione ‘python’ di npm al valore appropriato:
npm config set python /path/to/executable/python
  1. Se la variabile d’ambiente PYTHON è impostata sul percorso di un eseguibile Python, allora verrà usata quella versione, se è una versione compatibile.

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