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-gypen 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 Toolsen 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-gypest 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
PYTHONest 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_PYTHONest 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=2015doit ê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 gypfichiers 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-gypest 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