node-gyp - Node.js Native Addon Build Tool 
node-gyp est un outil de ligne de commande multiplateforme écrit dans Node.js pour compiler les modules d'addon natifs pour node.js. Il contient une copie vendue du projet GYP-Next qui a été précédemment utilisée par l'équipe Chromium et étendue pour soutenir le développement des addons natifs de Node.js.
Notez que node-gyp n'est pas utilisé pour construire Node.js lui-même.
Toutes les versions cibles actuelles et LTS de Node.js sont prises en charge. Selon la version de Node.js est 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. La liste des versions stables Node.js peut être trouvée sur le site Web de Node.js.
Important
Python> = v3.12 nécessite node-gyp > = v10
Vous pouvez installer node-gyp à l'aide de npm :
npm install -g node-gypSelon votre système d'exploitation, vous devrez installer:
makeXcode Command Line Tools qui installeront clang , clang++ et make .Xcode Command Line Tools autonome en exécutant xcode-select --install . -- OU --Xcode -> Open Developer Tool -> More Developer Tools...Installez des outils avec chocolaté:
choco install python visualstudio2022-workload-vctools -yOu installer et configurer les outils Python et Visual Studio manuellement:
Installez la version actuelle de Python à partir de la boutique Microsoft.
Installer Visual C ++ Build Environment: pour Visual Studio 2019 ou version ultérieure, utilisez le Desktop development with C++ de Visual Studio Community. Pour une version plus ancienne que Visual Studio 2019, installez Visual Studio Build Tools avec l'option Visual C++ build tools .
Si les étapes ci-dessus n'ont pas fonctionné pour vous, veuillez visiter les directives Node.js de Microsoft pour Windows pour des conseils supplémentaires.
Pour cibler ARM64 Node.js natifs sur Windows sur ARM, ajoutez les composants "compilateurs visuels C ++ et bibliothèques pour ARM64" et "Visual C ++ ATL pour ARM64".
Pour utiliser le compilateur ARM64 C ++ natif sur Windows sur ARM, assurez-vous que vous avez installé Visual Studio 2022 ou installé ultérieur.
Il est conseillé d'installer le module PowerShell suivant: VSSETUP à l'aide Install-Module VSSetup -Scope CurrentUser . Cela rendra la logique de détection de Studio Visual pour utiliser une méthode plus flexible et accessible, en évitant le mode ConstrainedLanguage de PowerShell.
node-gyp nécessite que vous ayez installé une version prise en charge de Python. Si vous avez plusieurs versions de Python installées, vous pouvez identifier la version node-gyp devrait utiliser de l'une des manières suivantes:
--python , par exemple: node-gyp < command > --python /path/to/executable/pythonnode-gyp est appelé par voie de npm et que vous avez plusieurs versions de Python installées, vous pouvez définir la variable d'environnement npm_config_python sur le chemin approprié: export npm_config_python=/path/to/executable/pythonOu sous Windows:
py --list-paths # To see the installed Python versions
set npm_config_python=C:pathtopython.exe # CMD
$Env:npm_config_python="C:pathtopython.exe" # PowerShell Si la variable d'environnement PYTHON est définie sur le chemin d'un exécutable Python, cette version sera utilisée s'il s'agit d'une version prise en charge.
Si la variable d'environnement NODE_GYP_FORCE_PYTHON est définie sur le chemin d'un exécutable Python, il sera utilisé à la place de l'un des autres chemins de recherche Python configurés ou intégrés. S'il ne s'agit pas d'une version compatible, aucune autre recherche ne sera effectuée.
Lors de la création de modules --dist-url les courses tierces --nodedir .
De plus, lorsque --dist-url ou --nodedir INDLOYAGES sont passés, Node-GYP utilisera la config.gypi expédiée dans la distribution des en-têtes pour générer des configurations de construction, qui est différente du mode par défaut qui utiliserait l'objet process.config de L'instance Node.js en cours d'exécution.
Quelques anciennes versions d'Electron expédiée malformed config.gypi dans leurs distributions d'en-têtes, et vous devrez peut-être passer --force-process-config to Node-Gyp pour contourner les erreurs de configuration.
Pour compiler votre addon natif, accédez d'abord à 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 plate-forme actuelle. Utilisez configure pour cela:
node-gyp configure La détection automatique é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 Remarque : L'étape configure recherche un fichier binding.gyp dans le répertoire actuel pour traiter. Voir ci-dessous pour les instructions sur la création d'un fichier binding.gyp .
Vous aurez maintenant soit un Makefile (sur les plates-formes UNIX) ou un fichier vcxproj (sur Windows) dans la build/ répertoire. Ensuite, appelez la commande build :
node-gyp build Vous avez maintenant votre fichier de liaisons .node compilé! Les liaisons compilées se retrouvent dans build/Debug/ ou build/Release/ , selon le mode de construction. À ce stade, vous pouvez nécessiter le fichier .node avec node.js et exécuter vos tests!
Remarque: Pour créer une construction de débogage du fichier de liaisons, passez le commutateur --debug (ou -d ) lorsque vous exécutez les commandes configure , build ou rebuild .
binding.gyp Un fichier binding.gyp décrit la configuration pour créer votre module, dans un format de type JSON. Ce fichier est placé à la racine de votre package, aux côtés de package.json .
Un fichier gyp à naissance nue approprié pour la construction d'un addon node.js pourrait ressembler:
{
"targets" : [
{
"target_name" : "binding" ,
"sources" : [ "src/binding.cc" ]
}
]
}Le répertoire DOCS contient une documentation supplémentaire sur des sujets spécifiques de gypne de nœuds qui peuvent être utiles si vous rencontrez des problèmes d'installation ou de création d'addons à l'aide de Node-Gyp.
Quelques ressources supplémentaires pour les addons natifs de Node.js et l'écriture de fichiers de configuration gyp :
node-gyp répond aux commandes suivantes:
| Commande | Description |
|---|---|
help | Montre la boîte de dialogue d'aide |
build | Invoque make / msbuild.exe et construit l'addon natif |
clean | Supprime le répertoire build s'il existe |
configure | Génère des fichiers de construction de projet pour la plate-forme actuelle |
rebuild | S'exécute clean , configure et build le tout dans une rangée |
install | Installe les fichiers d'en-tête Node.js pour la version donnée |
list | Répertorie les 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 |
node-gyp accepte les options de commande suivantes:
| Commande | Description |
|---|---|
-jn , --jobs n | Run make en parallèle. La valeur max utilisera tous les cœurs de processeur disponibles |
--target=v6.2.1 | Version Node.js à construire pour (par défaut est process.version ) |
--silly , --loglevel=silly | Enregistrer toutes les progrès vers la console |
--verbose , --loglevel=verbose | Enregistrer la plupart des progrès vers la console |
--silent , --loglevel=silent | Ne vous connectez rien à la console |
debug , --debug | Faire de la build de débogage (par défaut est Release ) |
--release , --no-debug | Faire la construction de la version |
-C $dir , --directory=$dir | Exécuter la commande dans différents répertoires |
--make=$make | Override make Commande (par exemple gmake ) |
--thin=yes | Activer les bibliothèques statiques minces |
--arch=$arch | Définir l'architecture cible (par exemple IA32) |
--tarball=$path | Obtenez des en-têtes d'un tarball local |
--devdir=$path | Répertoire de téléchargement SDK (répertoire par défaut est le système d'exploitation) |
--ensure | Ne réinstallez pas les en-têtes si vous êtes déjà présent |
--dist-url=$url | Télécharger l'en-tête tarball à partir de l'URL personnalisée |
--proxy=$url | Définir le proxy http (s) pour télécharger le tarball en tête |
--noproxy=$urls | Définissez les URL pour ignorer les proxies lors du téléchargement de tarball en tête |
--cafile=$cafile | Remplacer la chaîne CA par défaut (pour télécharger le tarball) |
--nodedir=$path | Définissez le chemin d'accès sur le code source du nœud |
--python=$path | Définir le chemin du binaire Python |
--msvs_version=$version | Définir la version Visual Studio (Windows uniquement) |
--solution=$solution | Définir la version de la solution Visual Studio (Windows uniquement) |
--force-process-config | Force à l'aide de l'objet process.config de runtime pour générer du fichier config.gypi |
Utilisez le formulaire npm_config_OPTION_NAME pour l'une des options de commande répertoriées ci-dessus (les tirets dans les noms d'options doivent être remplacés par des soulignements).
Par exemple, pour définir devdir égal à /tmp/.gyp , vous le feriez:
Exécutez ceci sur Unix:
export npm_config_devdir=/tmp/.gypOu ceci sous Windows:
set npm_config_devdir=c:temp.gypnpm pour les versions NPM avant V9 Utilisez le formulaire OPTION_NAME pour l'une des options de commande répertoriées ci-dessus.
Par exemple, pour définir devdir égal à /tmp/.gyp , vous courez:
npm config set [--global] devdir /tmp/.gyp Remarque: la configuration définie via npm ne sera utilisée que lorsque node-gyp est exécuté via npm , pas lorsque node-gyp est exécuté directement.
node-gyp est disponible sous la licence MIT. Voir le fichier de licence pour plus de détails.