nodejs / node-gyp
node-gyp
é uma ferramenta de linha de comando multi-plataforma escrita em Node.js para compilação de módulos addon nativos para Node.js. Ele contém uma cópia vendida do projeto thegyp-next que foi usado anteriormente pela equipe Chromium, estendida para suportar o desenvolvimento de addons nativos do Node.js.
Nota que node-gyp
não é usada para construir o próprio Node.js.
Versões alvo múltiplas do Node.js são suportadas (ou seja, 0.8
, …, 4
, 5
, 6
,etc.), independentemente de qual versão do Node.js está realmente instalada no seu sistema(node-gyp
descarrega os ficheiros de desenvolvimento ou cabeçalhos necessários para a versão alvo).
Características
- Os mesmos comandos de compilação funcionam em qualquer uma das plataformas suportadas
- Suporta a segmentação de diferentes versões do Node.js
Instalação
Pode instalar node-gyp
usando :
npm install -g node-gyp
Dependente do seu sistema operativo, terá de instalar:
Em Unix
- Python v3.6, v3.7, v3.8, ou v3.9
make
- Uma cadeia de ferramentas do compilador C/C++, como GCC
Em macOS
ATENÇÃO: Se o seu Mac foi actualizado para macOS Catalina (10.15), por favor leia macOS_Catalina.md.
- Python v3.6, v3.7, v3.8, ou v3.9
- Xcode
- É necessário também instalar o
XCode Command Line Tools
, executandoxcode-select --install
. Alternativamente, se você já tiver o Xcode completo instalado, você pode encontrá-los no menuXcode -> Open Developer Tool -> More Developer Tools...
. Este passo irá instalarclang
,clang++
, emake
.
- É necessário também instalar o
No Windows
Instalar a versão atual do Python a partir do pacote Microsoft Store.
Instalar ferramentas e configuração manualmente:
- Instalar o Ambiente de Compilação Visual C++: Visual Studio Build Tools(usando a carga de trabalho “Visual C++ build tools”) ou Visual Studio 2017 Community(usando a carga de trabalho “Desktop development with C++”)
- Launch cmd,
npm config set msvs_version 2017
Se os passos acima não funcionaram para você, visite o Node.js Guidelines for Windows da Microsoft para obter dicas adicionais.
Para ter como alvo o Node.js nativo do ARM64 no Windows 10 no ARM, adicione os componentes “Visual C++ compiladores e bibliotecas para o ARM64” e “Visual C++ ATL para o ARM64”.
Configurar a dependência do Python
node-gyp
requer que você tenha instalado uma versão compatível do Python, uma das seguintes: v3.6, v3.7,v3.8, ou v3.9. Se você tiver múltiplas versões Python instaladas, você pode identificar qual versão Pythonversion node-gyp
deve usar de uma das seguintes maneiras:
- definindo a opção de linha de comando
--python
, e.g.:
node-gyp <command> --python /path/to/executable/python
- Se
node-gyp
for chamado por meio denpm
, e você tiver múltiplas versões de Python instaladas, então você pode definir a chave de configuração ‘python’ denpm
para o valor apropriado:
npm config set python /path/to/executable/python
-
Se a variável de ambiente
PYTHON
for definida para o caminho de um executável Python, então essa versão será usada, se for uma versão compatível. -
Se a variável de ambiente
NODE_GYP_FORCE_PYTHON
estiver definida para o caminho de um executável Python, ela será usada ao invés de qualquer outro caminho de pesquisa Python configurado oubuiltin Python. Se não for uma versão compatível, nenhuma pesquisa adicional será feita.
Como Usar
Para compilar seu addon nativo, primeiro vá para seu diretório raiz:
cd my_node_addon
> O próximo passo é gerar os arquivos de compilação de projeto apropriados para a plataforma atual. Use configure
para isso:
node-gyp configure
Auto-detecção falha para Visual C+++ Build Tools 2015, então --msvs_version=2015
necessário adicionar (não necessário quando executado por npm como configurado acima):
node-gyp configure --msvs_version=2015
Note: O passo configure
procura por um arquivo binding.gyp
no diretório atual para processar. Veja abaixo as instruções para criar um arquivo binding.gyp
.
Agora você terá um arquivo Makefile
(em plataformas Unix) ou um arquivo vcxproj
(no Windows) no diretório build/
. A seguir, invoque o comando build
comando:
node-gyp build
Agora terá o seu ficheiro .node
bindings compilado! Os bindings compilados acabam em build/Debug/
ou build/Release/
, dependendo do modo de compilação. Neste ponto, você pode requerer o arquivo .node
com Node.js e executar seus testes!
Note: Para criar uma compilação de Debug do arquivo bindings, passe a chave --debug
(ou -d
) ao executar ou o arquivo configure
, build
ou rebuild
comandos.
O arquivo binding.gyp
A binding.gyp
arquivo descreve a configuração para construir seu módulo, no formato aJSON. Este arquivo é colocado na raiz do seu pacote, ao lado depackage.json
.
A barebones gyp
arquivo apropriado para construir um Node.js addon poderia parecer:
{ "targets": } ]}
Leitura adicional
Alguns recursos adicionais para o Node.js addons nativos e escrita gyp
arquivos de configuração:
- “Going Native” a nodeschool.io tutorial
- “Hello World” exemplo de addon de nós
- documentação do usuário do gip
- referência do formato de entrada do gip
- “binding”.arquivos gyp” na página wiki selvagem
Comandos
node-gyp
responde aos seguintes comandos:
Command | Descrição |
---|---|
help |
Mostra o diálogo de ajuda |
build > |
Faz uma invocação make /msbuild.exe e constrói o nativo addon |
clean |
Retira o directório build se existir |
configure |
Gera ficheiros de construção de projectos para a plataforma actual |
rebuild
|
Executar clean , configure e build todos em fila |
install > |
Nó de instalação.Arquivos de cabeçalho js para a versão dada |
list |
Lista as versões de cabeçalho do Nó.js atualmente instaladas |
remove |
Remova o Nó.Os arquivos de cabeçalho do js para a versão dada |
Opções de comando
>node-gyp
aceita as seguintes opções de comando:
Command | Descrição |
---|---|
-j n , --jobs n |
Executar make em paralelo. O valor max usará todos os núcleos de CPU disponíveis |
--target=v6.2.1 |
Nó.js versão a construir para (o padrão é process.version ) |
--silly , --loglevel=silly |
Logar todo o progresso para console |
--verbose , --loglevel=verbose |
Logar a maioria dos progressos para o console |
--silent , --loglevel=silent |
Não registrar nada no console |
debug , --debug |
Construir Debug (o padrão é Release ) |
--release , --no-debug |
Construir Release build |
-C $dir , --directory=$dir |
Executar comando em directório diferente |
--make=$make |
Override make comando (e.g. gmake ) |
--thin=yes |
Activar bibliotecas estáticas finas |
--arch=$arch
|
Definir a arquitectura alvo (por exemplo ia32) |
--tarball=$path |
Abter cabeçalhos de um tarball local |
--devdir=$path |
Diretório de download doSDK (o padrão é o diretório de cache do SO) |
--ensure |
Não reinstale os cabeçalhos se já estiverem presentes |
--dist-url=$url |
Download header tarball da URL personalizada |
--proxy=$url |
Set HTTP(S) proxy para download do header tarball |
--noproxy=$urls |
Set urls para ignorar proxies ao baixar o header tarball |
--cafile=$cafile |
Override corrente CA padrão (para baixar tarball) |
--nodedir=$path |
>Definir o caminho para o código fonte do nó |
--python=$path |
Definir o caminho para o binário Python |
--msvs_version=$version |
Definir a versão do Visual Studio (somente Windows) |
--solution=$solution |
Configurar versão Visual Studio Solution (apenas Windows) |
Configuração
Variáveis de ambiente
Utilizar o formulário npm_config_OPTION_NAME
para qualquer uma das opções de comando listadas acima (traços nos nomes das opções devem ser substituídos por sublinhados).
Por exemplo, para definir devdir
igual a /tmp/.gyp
, você deve:
Executar isto no Unix:
export npm_config_devdir=/tmp/.gyp
Or isto no Windows:
set npm_config_devdir=c:\temp\.gyp
configuração npm
Utilizar o formulário OPTION_NAME
para qualquer uma das opções de comando listadas acima.
Por exemplo, para definir devdir
igual a /tmp/.gyp
, você executaria:
npm config set devdir /tmp/.gyp
Nota: Configuração definida via npm
só será usada quando node-gyp
for executada via npm
, não quando node-gyp
for executada diretamente.
Licença
node-gyp
estiver disponível sob a licença do MIT. Veja o ficheiro LICENSE para mais detalhes.
Leave a Reply