nodejs / node-gyp

Build Status

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, executando xcode-select --install. Alternativamente, se você já tiver o Xcode completo instalado, você pode encontrá-los no menu Xcode -> Open Developer Tool -> More Developer Tools.... Este passo irá instalar clang, clang++, e make.

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:

  1. definindo a opção de linha de comando --python, e.g.:

node-gyp <command> --python /path/to/executable/python
  1. Se node-gyp for chamado por meio de npm, e você tiver múltiplas versões de Python instaladas, então você pode definir a chave de configuração ‘python’ de npm para o valor apropriado:
npm config set python /path/to/executable/python
  1. 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.

  2. 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=2015necessá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