nodejs / node-gyp

Build Status

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 Tools en exécutant xcode-select --install. Alternativement, si vous avez déjà installé le Xcode complet, vous pouvez les trouver sous le menu Xcode -> Open Developer Tool -> More Developer Tools.... Cette étape permettra d’installer clang, clang++ et make.

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 :

  1. en définissant l’option de ligne de commande --python, par exemple.:
node-gyp <command> --python /path/to/executable/python
  1. Si node-gyp est appelé par le biais de npm, et que vous avez plusieurs versions dePython installées, alors vous pouvez définir la clé de configuration ‘python’ de npm à la valeur appropriée :
npm config set python /path/to/executable/python
  1. 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.

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