nodejs / node-gyp

Build Status

node-gyp es una herramienta de línea de comandos multiplataforma escrita en Node.js para la compilación de módulos nativos para Node.js. Contiene una copia vendida del proyectogyp-next que fue utilizado previamente por el equipo de Chromium, ampliado para soportar el desarrollo de complementos nativos de Node.js.

Nótese que node-gyp no se utiliza para construir Node.js en sí.

Se soportan múltiples versiones de destino de Node.js (es decir, 0.8, …, 4, 5, 6, etc.), independientemente de la versión de Node.js que esté realmente instalada en su sistema(node-gyp descarga los archivos de desarrollo necesarios o las cabeceras para la versión de destino).

Características

  • Los mismos comandos de construcción funcionan en cualquiera de las plataformas soportadas
  • Soporta la orientación de diferentes versiones de Node.js

Instalación

Puede instalar node-gyp utilizando npm:

npm install -g node-gyp

Dependiendo de su sistema operativo, necesitará instalar:

En Unix

  • Python v3.6, v3.7, v3.8, o v3.9
  • make
  • Una cadena de herramientas de compilación C/C++ adecuada, como GCC

En macOS

ATENCIÓN: Si su Mac ha sido actualizado a macOS Catalina (10.15), por favor lea macOS_Catalina.md.

  • Python v3.6, v3.7, v3.8, o v3.9
  • Xcode
    • También necesita instalar el XCode Command Line Tools ejecutando xcode-select --install. Alternativamente, si ya tienes el Xcode completo instalado, puedes encontrarlos en el menú Xcode -> Open Developer Tool -> More Developer Tools.... Este paso instalará clang, clang++, y make.

En Windows

Instalar la versión actual de Python desde el paquete de Microsoft Store.

Instalar las herramientas y la configuración manualmente:

  • Instalar Visual C++ Build Environment: Visual Studio Build Tools(utilizando la carga de trabajo «Visual C++ build tools») o Visual Studio 2017 Community(utilizando la carga de trabajo «Desktop development with C++»)
  • Lanzamiento de cmd, npm config set msvs_version 2017

Si los pasos anteriores no le han funcionado, visite las Directrices de Node.js para Windows de Microsoft para obtener consejos adicionales.

Para orientar Node.js nativo de ARM64 en Windows 10 en ARM, añada los componentes «compiladores y bibliotecas de Visual C++ para ARM64» y «Visual C++ ATL para ARM64».

Configurar la dependencia de Python

node-gyprequiere que tenga instalada una versión compatible de Python, una de: v3.6, v3.7,v3.8, o v3.9. Si tiene varias versiones de Python instaladas, puede identificar qué versión de Python node-gyp debe utilizar de una de las siguientes maneras:

  1. estableciendo la opción de línea de comandos --python, por ejemplo
node-gyp <command> --python /path/to/executable/python
  1. Si node-gyp es llamado por medio de npm, y tiene múltiples versiones dePython instaladas, entonces puede establecer la clave de configuración ‘python’ de npm al valor apropiado:
npm config set python /path/to/executable/python
  1. Si la variable de entorno PYTHON se establece en la ruta de un ejecutable de Python, entonces se utilizará esa versión, si es una versión compatible.

  2. Si la variable de entorno NODE_GYP_FORCE_PYTHON se establece en la ruta de un ejecutable dePython, se utilizará en lugar de cualquiera de las otras rutas de búsqueda de Python configuradas o incorporadas. Si no es una versión compatible, no se hará ninguna otra búsqueda.

Cómo usar

Para compilar su addon nativo, primero vaya a su directorio raíz:

cd my_node_addon

El siguiente paso es generar los archivos de construcción del proyecto adecuados para la plataforma actual. Utilice configure para ello:

node-gyp configure

La detección automática falla para Visual C++ Build Tools 2015, por lo que es necesario añadir --msvs_version=2015 (no es necesario cuando se ejecuta por npm como se ha configurado anteriormente):

node-gyp configure --msvs_version=2015

Nota: El paso configure busca un archivo binding.gyp en el directorio actual para procesarlo. Vea a continuación las instrucciones para crear un archivo binding.gyp.

Ahora tendrá un archivo Makefile (en plataformas Unix) o un archivo vcxproj(en Windows) en el directorio build/. A continuación, invoca el comando build:

node-gyp build

¡Ahora tienes tu archivo de bindings .nodecompilado! Los bindings compilados terminan en build/Debug/ o build/Release/, dependiendo del modo de compilación. En este punto, puede requerir el archivo .node con Node.js y ejecutar sus pruebas!

Nota: Para crear una construcción Debug del archivo de bindings, pase el interruptor --debug (o-d) cuando ejecute los comandos configure, build o rebuild.

El archivo binding.gyp

Un archivo binding.gyp describe la configuración para construir su módulo, en un formato similar a JSON. Este archivo se coloca en la raíz de su paquete, junto a package.json.

Un archivo gypbásico apropiado para construir un addon Node.js podría tener el siguiente aspecto:

{ "targets": } ]}

Lectura adicional

Algunos recursos adicionales para Node.js y escribir archivos de configuración:

  • «Going Native» un tutorial de nodeschool.io
  • «Hello World» ejemplo de addon de node
  • documentación de usuario de gyp
  • referencia del formato de entrada de gyp
  • «binding.gyp» archivos fuera en la página wiki salvaje

Comandos

node-gyp responde a los siguientes comandos:

Comando Descripción
help Muestra el diálogo de ayuda
build Invoca make/msbuild.exe y construye el addon
clean Elimina el directorio build si existe
configure Genera los archivos de construcción del proyecto para la plataforma actual
rebuild Ejecuta clean, configure y build todos seguidos
install Instala los archivos de cabecera de Node.js para la versión dada
list Lista las versiones de cabecera de Node.js actualmente instaladas
remove Elimina los archivos de cabecera de Node.js para la versión dada

Opciones de comando

node-gyp acepta las siguientes opciones de comando:

Comando Descripción
-j n, --jobs n Ejecutar make en paralelo. El valor max utilizará todos los núcleos de CPU disponibles
--target=v6.2.1 Node.js para construir (por defecto es process.version)
--silly, --loglevel=silly Registrar todo el progreso en la consola
--verbose, --loglevel=verbose Registrar la mayor parte del progreso en la consola
--silent, --loglevel=silent No registrar nada en la consola
debug, --debug Hacer construcción de depuración (por defecto es Release)
--release, --no-debug Hacer construcción de liberación
-C $dir, --directory=$dir Ejecutar el comando en otro directorio
--make=$make Anular el comando make (por ejemplog. gmake)
--thin=yes Habilitar las bibliotecas estáticas finas
--arch=$arch Configurar la arquitectura de destino (p. ej. ia32)
--tarball=$path Obtener las cabeceras de un tarball local
--devdir=$path Directorio de descarga del SDK (por defecto es el directorio de caché del SO)
--ensure No reinstale las cabeceras si ya están presentes
--dist-url=$url Descargar el tarball de cabecera desde una URL personalizada
--proxy=$url Configurar proxy HTTP(S) para descargar el tarball de cabecera
--noproxy=$urls Configurar urls para ignorar los proxies al descargar el tarball de cabecera
--cafile=$cafile Anular la cadena CA por defecto (para descargar el tarball de cabecera). cadena CA por defecto (para descargar el tarball)
--nodedir=$path Configurar la ruta al código fuente del nodo
--python=$path Configurar la ruta al binario de Python
--msvs_version=$version Configurar la versión de Visual Studio (sólo en Windows)
--solution=$solution Configuración de la versión de la solución de Visual Studio (sólo para Windows)

Configuración

Variables de entorno

Utilice la forma npm_config_OPTION_NAME para cualquiera de las opciones de comando enumeradas anteriormente (los guiones en los nombres de las opciones deben sustituirse por guiones bajos).

Por ejemplo, para establecer devdir igual a /tmp/.gyp, debería:

Ejecutar esto en Unix:

export npm_config_devdir=/tmp/.gyp

O esto en Windows:

set npm_config_devdir=c:\temp\.gyp

npm configuration

Utilizar la forma OPTION_NAME para cualquiera de las opciones de comando listadas arriba.

Por ejemplo, para establecer devdir igual a /tmp/.gyp, se ejecutaría:

npm config set devdir /tmp/.gyp

Nota: La configuración establecida a través de npm sólo se utilizará cuando node-gyp se ejecute a través de npm, no cuando node-gyp se ejecute directamente.

Licencia

node-gyp está disponible bajo la licencia MIT. Vea el archivo LICENSE para más detalles.

Leave a Reply