nodejs / node-gyp
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
ejecutandoxcode-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++
, ymake
.
- También necesita instalar el
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-gyp
requiere 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:
- estableciendo la opción de línea de comandos
--python
, por ejemplo
node-gyp <command> --python /path/to/executable/python
- Si
node-gyp
es llamado por medio denpm
, y tiene múltiples versiones dePython instaladas, entonces puede establecer la clave de configuración ‘python’ denpm
al valor apropiado:
npm config set python /path/to/executable/python
-
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. -
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 .node
compilado! 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 gyp
bá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