nodejs / node-gyp
node-gyp
est un outil de ligne de commande multiplateforme écrit en Node.js forompiling native addon modules for Node.js. Il contient une copie vendue du projetgyp-next qui était précédemment utilisépar l’équipe Chromium, étendu pour supporter le développement de modules complémentaires natifs Node.js.
Notez que node-gyp
n’est pas utilisé pour construire Node.js lui-même.
Des versions cibles multiples de Node.js sont supportées (c’est-à-dire 0.8
, …, 4
, 5
, 6
,etc.), quelle que soit la version de Node.js réellement installée sur votre système(node-gyp
télécharge les fichiers de développement ou les en-têtes nécessaires pour la version cible).
Caractéristiques
- Les mêmes commandes de construction fonctionnent sur toutes les plateformes prises en charge
- Supportent le ciblage de différentes versions de Node.js
Installation
Vous pouvez installer node-gyp
en utilisant npm
:
npm install -g node-gyp
Selon votre système d’exploitation, vous devrez installer:
Sur Unix
- Python v3.6, v3.7, v3.8, ou v3.9
make
- Une chaîne d’outils de compilation C/C++ appropriée, comme GCC
Sur macOS
ATTENTION : Si votre Mac a été mis à niveau vers macOS Catalina (10.15), veuillez lire macOS_Catalina.md.
- Python v3.6, v3.7, v3.8, ou v3.9
- Xcode
- Vous devez également installer le
XCode Command Line Tools
en exécutantxcode-select --install
. Alternativement, si vous avez déjà installé le Xcode complet, vous pouvez les trouver sous le menuXcode -> Open Developer Tool -> More Developer Tools...
. Cette étape permettra d’installerclang
,clang++
etmake
.
- Vous devez également installer le
Sur Windows
Installer la version actuelle de Python à partir du package Microsoft Store.
Installer les outils et la configuration manuellement:
- Installer l’environnement de construction Visual C++ : Visual Studio Build Tools(en utilisant la charge de travail « Visual C++ build tools ») ou Visual Studio 2017 Community(en utilisant la charge de travail « Desktop development with C++ »)
- Lancer cmd,
npm config set msvs_version 2017
Si les étapes ci-dessus n’ont pas fonctionné pour vous, veuillez consulter les directives Node.js de Microsoft pour Windows pour des conseils supplémentaires.
Pour cibler Node.js natif ARM64 sur Windows 10 on ARM, ajoutez les composants « compilateurs et bibliothèques Visual C++ pour ARM64 » et « Visual C++ ATL pour ARM64 ».
Configuration de la dépendance Python
node-gyp
nécessite que vous ayez installé une version compatible de Python, l’une des suivantes : v3.6, v3.7,v3.8 ou v3.9. Si vous avez installé plusieurs versions de Python, vous pouvez identifier la version de Python que node-gyp
doit utiliser de l’une des manières suivantes :
- en définissant l’option de ligne de commande
--python
, par exemple.:
node-gyp <command> --python /path/to/executable/python
- Si
node-gyp
est appelé par le biais denpm
, et que vous avez plusieurs versions dePython installées, alors vous pouvez définir la clé de configuration ‘python’ denpm
à la valeur appropriée :
npm config set python /path/to/executable/python
-
Si la variable d’environnement
PYTHON
est définie sur le chemin d’un exécutable Python,alors cette version sera utilisée, si c’est une version compatible. -
Si la variable d’environnement
NODE_GYP_FORCE_PYTHON
est définie sur le chemin d’un exécutable Python, elle sera utilisée à la place de tout autre chemin de recherche Python configuré ou intégré. Si ce n’est pas une version compatible, aucune autre recherche ne sera effectuée.
Comment utiliser
Pour compiler votre addon natif, allez d’abord dans son répertoire racine :
cd my_node_addon
L’étape suivante consiste à générer les fichiers de construction de projet appropriés pour la plateforme actuelle. Utilisez configure
pour cela:
node-gyp configure
L’autodétection échoue pour Visual C++ Build Tools 2015, donc --msvs_version=2015
doit être ajouté (pas nécessaire lorsqu’il est exécuté par npm comme configuré ci-dessus):
node-gyp configure --msvs_version=2015
Note : L’étape configure
recherche un fichier binding.gyp
dans le répertoire courant à traiter. Voir ci-dessous pour les instructions sur la création d’un fichier binding.gyp
.
Maintenant vous aurez soit un fichier Makefile
(sur les plateformes Unix) ou un fichier vcxproj
(sur Windows) dans le répertoire build/
. Ensuite, invoquez la commande build
:
node-gyp build
Vous avez maintenant votre fichier de bindings .node
compilé ! Les bindings compilés se terminent dans build/Debug/
ou build/Release/
, selon le mode de construction. À ce stade, vous pouvez exiger le fichier .node
avec Node.js et exécuter vos tests!
Note : Pour créer un build Debug du fichier bindings, passez le commutateur --debug
(ou-d
) lors de l’exécution des commandes configure
, build
ou rebuild
.
Le fichier binding.gyp
Un fichier binding.gyp
décrit la configuration pour construire votre module, dans un format de type JSON. Ce fichier est placé à la racine de votre paquet, à côté depackage.json
.
Un fichier barebones gyp
approprié pour la construction d’un addon Node.js pourrait ressembler à :
{ "targets": } ]}
Lecture supplémentaire
Certaines ressources supplémentaires pour Node.js les addons natifs et l’écriture de gyp
fichiers de configuration:
- « Going Native » un tutoriel de nodeschool.io
- « Hello World » exemple d’addon node
- documentation utilisateur degyp
- référence du format d’entrée degyp
- « binding.gyp » fichiers out in the wild page wiki
Commandes
node-gyp
répond aux commandes suivantes :
Commande | Description |
---|---|
help |
Affiche le dialogue d’aide |
build |
Invoque make /msbuild.exe et construit l’addon natif. addon |
clean |
Supprime le répertoire build s’il existe |
configure |
Génère les fichiers de construction du projet pour la plateforme actuelle |
rebuild |
Exécute clean , configure et build d’affilée |
install |
Installe les fichiers d’en-tête de Node.js pour la version donnée |
list |
Liste des versions d’en-tête Node.js actuellement installées |
remove |
Supprime les fichiers d’en-tête Node.js pour la version donnée |
Options de commande
node-gyp
accepte les options de commande suivantes :
Commande | Description |
---|---|
-j n , --jobs n |
Exécuter make en parallèle. La valeur max utilisera tous les cœurs de CPU disponibles |
--target=v6.2.1 |
Node.js version to build for (default is process.version ) |
--silly , --loglevel=silly |
Log all progress to console |
--verbose , --loglevel=verbose |
Consigner la plupart des progrès à la console |
--silent , --loglevel=silent |
Ne rien consigner à la console |
debug , --debug |
Make Debug build (par défaut Release ) |
--release , --no-debug |
Make Release build |
-C $dir , --directory=$dir |
Exécuter la commande dans un répertoire différent |
--make=$make |
Passer outre la commande make (par ex.g. gmake ) |
--thin=yes |
Activer les bibliothèques statiques légères |
--arch=$arch |
Définir l’architecture cible (par ex. ia32) |
--tarball=$path |
Recevoir les en-têtes à partir d’une archive locale |
--devdir=$path |
Répertoire de téléchargement du SDK. (par défaut, le répertoire de cache du système d’exploitation) |
--ensure |
Ne pas réinstaller les en-têtes s’ils sont déjà présents |
--dist-url=$url |
Télécharger le tarball d’en-tête à partir d’une URL personnalisée |
--proxy=$url |
Définir le proxy HTTP(S) pour le téléchargement du tarball d’en-tête |
--noproxy=$urls |
Définir les urls pour ignorer les proxys lors du téléchargement du tarball d’en-tête |
--cafile=$cafile |
Passer outre chaîne CA par défaut (pour télécharger le tarball) |
--nodedir=$path |
Définir le chemin vers le code source du nœud |
--python=$path |
Définir le chemin vers le binaire Python |
--msvs_version=$version |
Définir la version de Visual Studio (Windows uniquement) |
--solution=$solution |
Définir la version de Visual Studio Solution (Windows uniquement) |
Configuration
Variables d’environnement
Utiliser la forme npm_config_OPTION_NAME
pour n’importe laquelle des options de commande listéesci-dessus (les tirets dans les noms d’options doivent être remplacés par des traits de soulignement).
Par exemple, pour définir devdir
égal à /tmp/.gyp
, vous devez :
Exécuter ceci sur Unix:
export npm_config_devdir=/tmp/.gyp
Ou ceci sur Windows:
set npm_config_devdir=c:\temp\.gyp
npm configuration
Utiliser la forme OPTION_NAME
pour n’importe laquelle des options de commande énumérées ci-dessus.
Par exemple, pour définir devdir
égale à /tmp/.gyp
, vous exécuteriez :
npm config set devdir /tmp/.gyp
Note : la configuration définie via npm
ne sera utilisée que lorsque node-gyp
est exécutée via npm
, et non lorsque node-gyp
est exécutée directement.
Licence
node-gyp
est disponible sous la licence MIT. Voir le fichier LICENSEfile pour plus de détails.
Leave a Reply