Was ist Node-Gyp?


122

Kann mir jemand erklären, was ist node-gypund warum es meine Systemdateien verwendet, um Node.JS-Pakete zu erstellen.

  1. Wenn ich ein Knotenprojekt erstelle und es node-gypintern verwendet.
  2. Dann habe ich dieses Projekt einfach tariert und bin auf ein anderes System umgezogen
  3. Ich entpacke es dort und versuche es zu benutzen

Wird dieser Ansatz funktionieren?


17
Es ist auf seiner Github-Seite beschrieben: github.com/nodejs/node-gyp . Grundsätzlich node-gypist wie make. Es ist ein Tool zur Steuerung des Kompilierungsprozesses von C ++ - Projekten. Nur wurde es speziell für node.js-Addons (in C ++ geschriebene Module) entwickelt. Der Wechsel zu einem anderen System kann also funktionieren, wenn dieselbe CPU verwendet wird. Das Wechseln zu einem anderen Betriebssystem oder einer anderen CPU (z. B. von x86 zu ARM) funktioniert nicht. Unter Linux funktioniert das Wechseln zu einer anderen Distribution einer anderen Version derselben Distribution möglicherweise oder auch nicht. Ich bin nicht 100% sicher, ob die Umstellung auf eine andere Version von node.js funktionieren würde
slebetman

2
Wenn ich es starte yarn why node-gyp, kommt es zurück mit: weil node-sass, also bin ich sicher, dass es andere Verwendungszwecke hat, aber es kann in Ihrem Projekt sein, wenn bei Ihnen oder jemandem, den Sie lieben, eine Diagnose gestellt wurde sass.
Kzqai

@slebetman, das auf eine andere Knotenversion wechselt, funktioniert nicht. Ich bin mir nicht sicher, ob dies zu 100% zutrifft. Nach meiner Erfahrung müssen Sie jedoch nach dem Upgrade der nodejs-Version den alten Node-Gyp entfernen. Während der Installation der Module wird er automatisch im Hintergrund neu erstellt.
Lukas Liesis

Antworten:


133

node-gypist ein Tool, das Node.js Addons kompiliert. Node.js-Addons sind native Node.js-Module, die in C oder C ++ geschrieben sind und daher auf Ihrem Computer kompiliert werden müssen. Nachdem sie mit Tools wie Node-Gyp kompiliert wurden, kann auf ihre Funktionalität require()wie auf jedes andere Node.js-Modul zugegriffen werden .

Wenn Sie das tun, was Sie vorgeschlagen haben, dass das Modul nicht funktioniert, müssen Sie es mit node-gyp auf dem System kompilieren / erstellen, auf das Sie das Programm verschoben haben.

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

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


28
Ich muss zugeben, ich sehe ein Modul ohne npmjs, das Node-Gyp verwendet. Ich laufe normalerweise 10 Meilen entfernt
PirateApp

38
Es ist aufregend, dass Sie heutzutage eine (scheinbar) relativ einfache Web-App klonen können, die in NodeJS geschrieben wurde, und plötzlich müssen Sie Software herunterladen, um in C und C ++ geschriebenes natives Coden zu kompilieren. Das Beste ist, wenn Sie auf Probleme stoßen und genau wissen, wie Sie mit Ihren Webdesign-Fähigkeiten umgehen können.
Jim Aho

3
@ Mr-Programme Es ist durch eine Bindung verbunden, die auch von Ihnen geschrieben werden muss
vuza

2
@JimAho Idealerweise und oft ist der Code nur eine Blackbox. Das Gute ist, dass Sie schnelle und gut unterstützte Tools verwenden können, um bestimmte Dinge wie das Parsen von XML auszuführen, und nicht auf einen js-Port warten müssen, der möglicherweise langsamer oder defekter ist. Trotzdem bevorzuge ich, wann immer möglich, native js, aber ich bin mir nicht sicher, ob diese Position begründet ist. Außerdem sollte C / C ++ für jeden Fall sehr portabel sein, der nicht absichtlich vom Betriebssystem abhängig ist (wie Benachrichtigungen). Darüber hinaus finden fehleranfällige Pakete unabhängig von der Quelle der Fehler keine breite Akzeptanz.
Adam Tolley

3
Zu Ihrer Information, ich glaube, "Gyp" ist die Abkürzung für "Generieren Sie Ihre Projekte"
Tom
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.