O que é node-gyp

123

Alguém pode me explicar o que é node-gype por que usa meus arquivos de sistema para construir pacotes Node.JS.

  1. Se eu construir um projeto de nó e usá-lo node-gypinternamente.
  2. Então eu apenas tar esse projeto e mudei para um sistema diferente
  3. Eu descompato lá e tento usar

Essa abordagem funcionará?

autodidata 91
fonte
17
Ele está descrito em sua página no github: github.com/nodejs/node-gyp . Basicamente, node-gypé como make. É uma ferramenta utilizada para controlar o processo de compilação de projetos C ++. Apenas, ele é projetado especificamente para addons node.js (módulos escritos em C ++). Portanto, mudar para um sistema diferente pode funcionar se ele usar a mesma CPU. Mudar para um sistema operacional ou CPU diferente (por exemplo, de x86 para ARM) não funcionará. Para Linux, mudar para uma distro diferente de uma versão diferente da mesma distro pode ou não funcionar. Não tenho 100% de certeza se a mudança para uma versão diferente do node.js funcionaria
slebetman
2
Quando eu executo, yarn why node-gypele retorna com: porque node-sass, então tenho certeza que tem outros usos, mas pode estar no seu projeto se você ou alguém que você ama foi diagnosticado com sass.
Kzqai
@slebetman mover para uma versão de nó diferente não funcionará, não tenho certeza se isso é 100% verdade, mas pela minha experiência, você precisa remover o nó-gyp antigo após atualizar a versão do nodejs e durante a instalação dos módulos, ele é reconstruído automaticamente em segundo plano.
Lukas Liesis

Respostas:

134

node-gypé uma ferramenta que compila complementos do Node.js. Os complementos do Node.js são módulos nativos do Node.js, escritos em C ou C ++, que, portanto, precisam ser compilados em sua máquina. Depois que eles são compilados com ferramentas como node-gyp, sua funcionalidade pode ser acessada via require(), assim como qualquer outro módulo Node.js.

Se você fizer o que sugeriu que o módulo não funcionará, você precisará compilá-lo / construí-lo com o node-gyp no sistema para o qual moveu o programa.

node-gyp: https://github.com/nodejs/node-gyp

Complementos Node.js: https://nodejs.org/api/addons.html

vuza
fonte
28
tenho que admitir, vejo um módulo sem npmjs que usa node-gyp que normalmente corro a 10 milhas de distância
PirateApp
38
É empolgante que você hoje em dia possa clonar um (o que parece) um aplicativo da web relativamente simples escrito em NodeJS e, de repente, você deve baixar um software para compilar o código nativo escrito em C e C ++. A melhor parte é quando você se depara com problemas e sabe exatamente o que fazer com suas habilidades de web design para resolver isso.
Jim Aho
3
@ Mr-Programs Ele é conectado por meio de uma ligação, que também precisa ser escrita por você
vuza
2
@JimAho Idealmente, e frequentemente, o código é apenas uma caixa preta. O bom é que você pode usar ferramentas rápidas e bem suportadas para fazer coisas específicas como analisar xml, e não ter que esperar por uma porta js que pode ser mais lenta ou mais danificada. Dito isso, prefiro js nativos sempre que possível, mas não tenho certeza se essa posição é bem fundamentada. Além disso, C / C ++ deve ser muito portátil para qualquer caso que não seja propositalmente dependente do sistema operacional (como notificações). Além disso, os pacotes sujeitos a bugs não são amplamente adotados, independentemente da fonte desses bugs.
Adam Tolley
3
Para sua informação, eu acredito que "gyp" é a abreviação de "gerar seus projetos"
Tom,