node-gyp - node.js 
node-gyp é uma ferramenta de linha de comando de plataforma cruzada escrita no Node.js para compilar módulos de addon nativo para node.js. Ele contém uma cópia vendida do projeto GYP-NEXT que foi usado anteriormente pela equipe do Chromium e estendido para apoiar o desenvolvimento de addons nativos do Node.js.
Observe que node-gyp não é usado para criar o Node.js.
Todas as versões de destino atuais e LTs do Node.js são suportadas. Dependendo da versão do Node.js, está realmente instalada no seu sistema node-gyp Downloads os arquivos de desenvolvimento ou cabeçalhos necessários para a versão de destino. A lista de versões estáveis node.js pode ser encontrada no site Node.js.
Importante
Python> = v3.12 requer node-gyp > = v10
Você pode instalar node-gyp usando npm :
npm install -g node-gypDependendo do seu sistema operacional, você precisará instalar:
makeXcode Command Line Tools que instalarão clang , clang++ e make .Xcode Command Line Tools independentes executando xcode-select --install . -- OU --Xcode -> Open Developer Tool -> More Developer Tools...Instale ferramentas com chocolate:
choco install python visualstudio2022-workload-vctools -yOu instale e configure as ferramentas Python e Visual Studio manualmente:
Instale a versão atual do Python na Microsoft Store.
Instale o ambiente Visual C ++ Build: Para o Visual Studio 2019 ou posterior, use o Desktop development with C++ da Comunidade do Visual Studio. Para uma versão mais antiga que o Visual Studio 2019, instale as ferramentas de construção do Visual Studio com a opção Visual C++ build tools .
Se as etapas acima não funcionarem para você, visite as diretrizes Node.js da Microsoft para Windows para obter dicas adicionais.
Para direcionar o node node.js nativo no Windows no braço, adicione os componentes "Compiladores e bibliotecas visuais de C ++ para ARM64" e "Visual C ++ ATL para ARM64".
Para usar o compilador nativo do ARM64 C ++ no Windows no braço, verifique se você possui o Visual Studio 2022 17.4 ou posteriormente instalado.
É recomendável instalar o seguinte módulo PowerShell: vssetup usando Install-Module VSSetup -Scope CurrentUser . Isso tornará a lógica de detecção do Visual Studio para usar o método mais flexível e acessível, evitando o modo de Languagem ConstrainedLanguage PowerShell.
node-gyp exige que você tenha instalado uma versão suportada do Python. Se você tiver várias versões do Python instaladas, pode identificar qual versão node-gyp deve usar de uma das seguintes maneiras:
--python python-line, por exemplo: node-gyp < command > --python /path/to/executable/pythonnode-gyp for chamado por meio de npm e você ter várias versões do Python instaladas, poderá definir a variável de ambiente npm_config_python para o caminho apropriado: export npm_config_python=/path/to/executable/pythonOu no 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 Se a variável de ambiente PYTHON estiver definida para o caminho de um executável do Python, essa versão será usada se for uma versão suportada.
Se a variável NODE_GYP_FORCE_PYTHON estiver definida para o caminho de um executável do Python, ela será usada em vez de qualquer outro caminho de pesquisa de Python configurado ou embutido. Se não for uma versão compatível, nenhuma pesquisa adicional será feita.
Ao construir módulos para node.js de terceiros, como elétron, que possuem configurações de construção diferentes da distribuição oficial do Node.js, você deve usar --dist-url ou --nodedir sinalizadores para especificar os cabeçalhos do tempo de execução para construir para .
Além disso, quando-sinalizadores --dist-url ou --nodedir são passados, o Node-GYP usará o config.gypi enviado na distribuição dos cabeçalhos para gerar configurações de construção, que é diferente do modo padrão que usaria o objeto process.config de a instância Node.js em execução.
Algumas versões antigas de elétrons enviaram config.gypi em suas distribuições de cabeçalhos, e você pode precisar passar --force-process-config para o Node-GYP para contornar os erros de configuração.
Para compilar seu addon nativo primeiro, vá para o diretório raiz:
cd my_node_addon A próxima etapa é gerar os arquivos de criação de projeto apropriados para a plataforma atual. Use configure para isso:
node-gyp configure A detecção automática falha para as ferramentas visuais de construção de C ++ 2015, então --msvs_version=2015 precisa ser adicionado (não é necessário quando executado pelo NPM, conforme configurado acima):
node-gyp configure --msvs_version=2015 NOTA : A etapa configure procura um arquivo binding.gyp no diretório atual para processar. Veja abaixo as instruções sobre como criar um arquivo binding.gyp .
Agora você terá um Makefile (em plataformas UNIX) ou um arquivo vcxproj (no Windows) no diretório build/ . Em seguida, invocar o comando build :
node-gyp build Agora você tem seu arquivo .node Bindings compilado! As ligações compiladas acabam no build/Debug/ build/Release/ , dependendo do modo de construção. Neste ponto, você pode exigir o arquivo .node com o Node.js e executar seus testes!
NOTA: Para criar uma construção de depuração do arquivo de ligação, passe o interruptor --debug (ou -d ) ao executar os comandos de configure , build ou rebuild .
binding.gyp Um arquivo binding.gyp descreve a configuração para criar seu módulo, em um formato do tipo JSON. Este arquivo é colocado na raiz do seu pacote, ao lado package.json .
Um arquivo BareBones gyp apropriado para a construção de um addon node.js poderia parecer:
{
"targets" : [
{
"target_name" : "binding" ,
"sources" : [ "src/binding.cc" ]
}
]
}O diretório do DOCS contém documentação adicional sobre tópicos específicos do Node-GYP que podem ser úteis se você estiver enfrentando problemas para instalar ou criar addons usando o Node-GYP.
Alguns recursos adicionais para addons nativos do Node.js e escrevendo arquivos de configuração gyp :
node-gyp responde aos seguintes comandos:
| Comando | Descrição |
|---|---|
help | Mostra a caixa de diálogo de ajuda |
build | Invokes make / msbuild.exe e constrói o addon nativo |
clean | Remove o diretório build se ele existir |
configure | Gera arquivos de construção de projetos para a plataforma atual |
rebuild | Corre clean , configure e build tudo em uma linha |
install | Instala arquivos de cabeçalho Node.js para a versão especificada |
list | Lista as versões do cabeçalho Node.js atualmente instaladas |
remove | Remove os arquivos de cabeçalho Node.js para a versão especificada |
node-gyp aceita as seguintes opções de comando:
| Comando | Descrição |
|---|---|
-jn , --jobs n | Executar make em paralelo. O valor max usará todos os núcleos da CPU disponíveis |
--target=v6.2.1 | Versão node.js para construir (o padrão é process.version ) |
--silly , --loglevel=silly | Registrar todo o progresso no console |
--verbose , --loglevel=verbose | Registrar mais progresso no console |
--silent , --loglevel=silent | Não registre nada para consolar |
debug , --debug | Faça a construção de depuração (o padrão é Release ) |
--release , --no-debug | Faça a versão de liberação |
-C $dir , --directory=$dir | Execute o comando em diretório diferente |
--make=$make | Substitua make Command (por exemplo, gmake ) |
--thin=yes | Ativar bibliotecas estáticas finas |
--arch=$arch | Definir arquitetura de destino (por exemplo, IA32) |
--tarball=$path | Obtenha cabeçalhos de um tarball local |
--devdir=$path | SDK Download Directory (padrão é o diretório de cache do OS) |
--ensure | Não reinstale os cabeçalhos se já estiver presente |
--dist-url=$url | Baixe o cabeçalho Tarball do URL personalizado |
--proxy=$url | Definir proxy HTTP (s) para baixar o cabeçalho Tarball |
--noproxy=$urls | Defina URLs para ignorar proxies ao baixar o cabeçalho Tarball |
--cafile=$cafile | Substituir a cadeia CA padrão (para baixar tarball) |
--nodedir=$path | Defina o caminho para o código -fonte do nó |
--python=$path | Defina o caminho para o binário python |
--msvs_version=$version | Defina a versão do Visual Studio (somente Windows) |
--solution=$solution | Defina a versão do Visual Studio (somente o Windows) |
--force-process-config | Force Usando o objeto process.config do Runtime Time para gerar arquivo config.gypi |
Use o formulário npm_config_OPTION_NAME para qualquer uma das opções de comando listadas acima (os traços nos nomes das opções devem ser substituídos por sublinhados).
Por exemplo, para definir devdir igual a /tmp/.gyp , você faria:
Execute isso no Unix:
export npm_config_devdir=/tmp/.gypOu isso no Windows:
set npm_config_devdir=c:temp.gypnpm para versões NPM antes do V9 Use 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 [--global] devdir /tmp/.gyp Nota: A configuração definida via npm será usada apenas quando node-gyp for executado via npm , não quando node-gyp for executado diretamente.
node-gyp está disponível sob a licença do MIT. Consulte o arquivo de licença para obter detalhes.