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-gyp
Dependendo do seu sistema operacional, você precisará instalar:
make
Xcode 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 -y
Ou 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/python
node-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/python
Ou 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/.gyp
Ou isso no Windows:
set npm_config_devdir=c:temp.gyp
npm
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.