node-gyp
- Herramienta de compilación de complementos nativos de Node.js node-gyp
es una herramienta de línea de comandos multiplataforma escrita en Node.js para compilar módulos de complementos nativos para Node.js. Contiene una copia vendida del proyecto GYP-Next que el equipo de Chromium utilizó anteriormente y se extendió para apoyar el desarrollo de complementos nativos de Node.js.
Tenga en cuenta que node-gyp
no se usa para construir Node.js en sí.
Se admiten todas las versiones actuales y de LTS objetivo de Node.js. Dependiendo de qué versión de Node.js está realmente instalada en el nodo de su sistema, node-gyp
descarga los archivos de desarrollo o encabezados necesarios para la versión de destino. La lista de versiones estables node.js se puede encontrar en el sitio web Node.js.
Importante
Python> = v3.12 requiere node-gyp
> = v10
Puede instalar node-gyp
usando npm
:
npm install -g node-gyp
Dependiendo de su sistema operativo, deberá instalar:
make
Xcode Command Line Tools
que instalarán clang
, clang++
y make
.Xcode Command Line Tools
Standalone ejecutando xcode-select --install
. -- O --Xcode -> Open Developer Tool -> More Developer Tools...
Instalar herramientas con chocolate:
choco install python visualstudio2022-workload-vctools -y
O instalar y configurar las herramientas de Python y Visual Studio manualmente:
Instale la versión actual de Python en la tienda Microsoft.
Instale el entorno de construcción de Visual C ++: para Visual Studio 2019 o posterior, use el Desktop development with C++
de Visual Studio Community. Para una versión anterior a Visual Studio 2019, instale herramientas de compilación de Visual Studio con la opción Visual C++ build tools
.
Si los pasos anteriores no funcionaron para usted, visite las pautas Node.js de Microsoft para Windows para obtener consejos adicionales.
Para dirigir el nodo ARM64 nativo en las ventanas en el brazo, agregue los componentes "compiladores y bibliotecas visuales de C ++ para ARM64" y "Visual C ++ ATL para ARM64".
Para usar el compilador Native ARM64 C ++ en las ventanas en el brazo, asegúrese de tener Visual Studio 2022 17.4 o posterior instalado.
Se recomienda instalar el siguiente módulo PowerShell: VSSetup utilizando Install-Module VSSetup -Scope CurrentUser
. Esto hará que Visual Studio Detection Logic para usar un método más flexible y accesible, evitando el modo de ConstrainedLanguage
de PowerShell.
node-gyp
requiere que haya instalado una versión compatible de Python. Si tiene múltiples versiones de Python instaladas, puede identificar qué versión debe usar node-gyp
de una de las siguientes maneras:
--python
Command-Line, por ejemplo: node-gyp < command > --python /path/to/executable/python
node-gyp
se llama a través de npm
, y tiene múltiples versiones de Python instaladas, entonces puede establecer la variable de entorno npm_config_python
en la ruta apropiada: export npm_config_python=/path/to/executable/python
O en 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 de entorno PYTHON
se establece en la ruta de un ejecutable de Python, entonces esa versión se usará si es una versión compatible.
Si la variable de entorno NODE_GYP_FORCE_PYTHON
se establece en la ruta de un ejecutable de Python, se usará 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 realizará más búsqueda.
Al construir módulos para tiempos de ejecución de Node.js de terceros como Electron, que tienen diferentes configuraciones de compilación de la distribución oficial de nodo.js, debe usar los indicadores --dist-url
o --nodedir
para especificar los encabezados del tiempo de ejecución para construir para construir .
Además, cuando se pasan los indicadores --dist-url
o --nodedir
, Node-Gyp usará el config.gypi
enviado en la distribución de encabezados para generar configuraciones de compilación, que es diferente del modo predeterminado que utilizaría el objeto process.config
de La instancia de Node.js en ejecución.
Algunas versiones antiguas de config.gypi
malformada de Electron enviada en sus distribuciones de encabezados, y es posible que deba aprobar --force-process-config
a Node-Gyp para trabajar en torno a los errores de configuración.
Para compilar su complemento nativo, primero vaya a su directorio raíz:
cd my_node_addon
El siguiente paso es generar los archivos de compilación del proyecto apropiados para la plataforma actual. Use configure
para eso:
node-gyp configure
La detección automática falla para Visual C ++ Build Tools 2015, por lo que --msvs_version=2015
debe agregarse (no es necesario cuando se ejecuta NPM como se configuró anteriormente):
node-gyp configure --msvs_version=2015
Nota : El paso configure
busca un archivo binding.gyp
en el directorio actual para procesar. Consulte a continuación las instrucciones sobre cómo crear un archivo binding.gyp
.
Ahora tendrá un Makefile
(en plataformas UNIX) o un archivo vcxproj
(en Windows) en la build/
directorio. A continuación, invoca el comando build
:
node-gyp build
¡Ahora tiene su archivo compilado .node
Bindings! Los enlaces 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 compilación de depuración del archivo Bindings, pase el conmutador --debug
(o -d
) al ejecutar los comandos configure
, build
o rebuild
.
binding.gyp
Un archivo binding.gyp
describe la configuración para construir su módulo, en un formato tipo JSON. Este archivo se coloca en la raíz de su paquete, junto con package.json
.
Un archivo gyp
Barebones apropiado para construir un complemento nodo.js podría parecerse:
{
"targets" : [
{
"target_name" : "binding" ,
"sources" : [ "src/binding.cc" ]
}
]
}
El Directorio DOCS contiene documentación adicional sobre temas específicos de nodo-GYP que pueden ser útiles si está experimentando problemas para instalar o construir complementos utilizando el nodo-GYP.
Algunos recursos adicionales para complementos nativos de Node.js y escribiendo archivos de configuración gyp
:
node-gyp
responde a los siguientes comandos:
Dominio | Descripción |
---|---|
help | Muestra el diálogo de ayuda |
build | Invoca make / msbuild.exe y construye el complemento nativo |
clean | Elimina el directorio build si existe |
configure | Genera archivos de compilación del proyecto para la plataforma actual |
rebuild | Ejecuta clean , configure y build todo en una fila |
install | Instala archivos de encabezado Node.js para la versión dada |
list | Enumera las versiones de encabezado Node.js instaladas actualmente |
remove | Elimina los archivos de encabezado Node.js para la versión dada |
node-gyp
acepta las siguientes opciones de comando:
Dominio | Descripción |
---|---|
-jn , --jobs n | Ejecutar make en paralelo. El valor max utilizará todos los núcleos de CPU disponibles |
--target=v6.2.1 | La versión node.js para construir (predeterminada es process.version ) |
--silly , --loglevel=silly | Registre todo el progreso a la consola |
--verbose , --loglevel=verbose | Registre más progreso a la consola |
--silent , --loglevel=silent | No registre nada para consolar |
debug , --debug | Hacer que la depuración se construya (el valor predeterminado es Release ) |
--release , --no-debug | Hacer la construcción de lanzamiento |
-C $dir , --directory=$dir | Ejecutar el comando en un directorio diferente |
--make=$make | Anular make comando (por ejemplo, gmake ) |
--thin=yes | Habilitar bibliotecas estáticas delgadas |
--arch=$arch | Establecer arquitectura objetivo (por ejemplo, IA32) |
--tarball=$path | Obtenga encabezados de un tarball local |
--devdir=$path | Directorio de descarga de SDK (el valor predeterminado es el directorio de cache OS) |
--ensure | No reinstale los encabezados si ya está presente |
--dist-url=$url | Descargar el Tarball de encabezado de URL personalizado |
--proxy=$url | Establecer proxy HTTP (S) para descargar el Tarball de encabezado |
--noproxy=$urls | Establezca URL para ignorar los proxies al descargar encabezado Tarball |
--cafile=$cafile | Anular la cadena CA predeterminada (para descargar Tarball) |
--nodedir=$path | Establezca la ruta al código fuente del nodo |
--python=$path | Establecer camino hacia el binario de Python |
--msvs_version=$version | Establecer la versión de Visual Studio (solo Windows) |
--solution=$solution | Establecer la versión de solución de Visual Studio (solo Windows) |
--force-process-config | Forzar el uso de process.config de runtime.config objeto para generar el archivo config.gypi |
Use el formulario npm_config_OPTION_NAME
para cualquiera de las opciones de comando enumeradas anteriormente (los guiones en los nombres de opciones deben ser reemplazados por subscores).
Por ejemplo, para establecer devdir
igual a /tmp/.gyp
, lo haría:
Ejecute esto en Unix:
export npm_config_devdir=/tmp/.gyp
O esto en Windows:
set npm_config_devdir=c:temp.gyp
npm
para versiones NPM antes de V9 Use el formulario OPTION_NAME
para cualquiera de las opciones de comando enumeradas anteriormente.
Por ejemplo, para establecer devdir
igual a /tmp/.gyp
, ejecutaría:
npm config set [--global] devdir /tmp/.gyp
Nota: La configuración establecida a través de npm
solo se usará cuando node-gyp
se ejecute a través de npm
, no cuando node-gyp
se ejecuta directamente.
node-gyp
está disponible bajo la licencia MIT. Consulte el archivo de licencia para obtener más detalles.