Apa itu node-gyp

123

Adakah yang bisa menjelaskan kepada saya apa itu node-gypdan mengapa ia menggunakan file sistem saya untuk membangun paket Node.JS.

  1. Jika Ii membangun proyek node dan digunakan secara node-gypinternal.
  2. Lalu saya baru saja memasang proyek itu dan pindah ke sistem yang berbeda
  3. Saya untar di sana dan mencoba menggunakannya

Akankah pendekatan ini berhasil?

selftaught91
sumber
17
Ini dijelaskan di halaman github-nya: github.com/nodejs/node-gyp . Pada dasarnya, node-gypseperti make. Ini adalah alat yang digunakan untuk mengontrol proses kompilasi proyek C ++. Hanya saja, ini dirancang khusus untuk addons node.js (modul yang ditulis dalam C ++). Jadi pindah ke sistem yang berbeda dapat bekerja jika menggunakan CPU yang sama. Pindah ke OS atau CPU lain (misalnya dari x86 ke ARM) tidak akan berfungsi. Untuk Linux, pindah ke distro berbeda dari versi berbeda dari distro yang sama mungkin berfungsi atau tidak. Saya tidak 100% yakin apakah pindah ke versi berbeda dari node.js akan berhasil
slebetman
2
Ketika saya menjalankannya yarn why node-gypkembali dengan: karena node-sass, jadi saya yakin itu memiliki kegunaan lain, tetapi mungkin ada dalam proyek Anda jika Anda atau seseorang yang Anda cintai telah didiagnosis sass.
Kzqai
@slebetman pindah ke versi node yang berbeda tidak akan berfungsi, tidak yakin apakah itu 100% benar, namun dari pengalaman saya, Anda perlu menghapus node-gyp lama setelah meningkatkan versi nodejs dan selama modul menginstal itu dibangun ulang secara otomatis di latar belakang.
Lukas Liesis

Jawaban:

134

node-gypadalah alat yang mengkompilasi Addons Node.js. Addons Node.js adalah Modul Node.js asli, ditulis dalam C atau C ++, yang oleh karena itu perlu dikompilasi pada mesin Anda. Setelah dikompilasi dengan alat seperti node-gyp, fungsinya dapat diakses melalui require(), sama seperti Modul Node.js lainnya.

Jika Anda melakukan apa yang Anda sarankan, modul tidak akan berfungsi, Anda perlu mengkompilasinya / membangunnya dengan node-gyp pada sistem tempat Anda memindahkan program.

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

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

vuza
sumber
28
harus mengakui, saya melihat modul tidak ada npmjs yang menggunakan node-gyp Saya biasanya berjalan 10 mil jauhnya
PirateApp
38
Sangat mengasyikkan bahwa Anda saat ini dapat mengkloning aplikasi web (yang tampaknya) relatif sederhana yang ditulis dalam NodeJS, dan tiba-tiba Anda harus mengunduh perangkat lunak untuk mengkompilasi kode asli yang ditulis dalam C dan C ++. Bagian terbaiknya adalah ketika Anda mengalami masalah, dan Anda tahu persis apa yang dilakukan dengan keterampilan desain web Anda untuk menyelesaikannya.
Jim Aho
3
@ Mr-Program Itu terhubung melalui penjilidan, yang juga perlu Anda tulis
vuza
2
@JimAho Idealnya, dan seringkali, kode hanya dikotak hitam. Hal baiknya adalah Anda dapat menggunakan alat yang cepat dan didukung dengan baik untuk melakukan hal-hal tertentu seperti parse xml, dan tidak perlu menunggu port js yang mungkin lebih lambat atau lebih rusak. Meskipun demikian, saya lebih suka native js jika memungkinkan, tetapi saya tidak yakin bahwa posisi tersebut beralasan. Selain itu, C / C ++ harus sangat portabel untuk kasus apa pun yang tidak bergantung pada OS secara sengaja (seperti notifikasi). Selain itu, paket yang rentan bug tidak melihat adopsi yang luas terlepas dari sumber bug tersebut.
Adam Tolley
3
FYI, saya percaya "gyp" adalah kependekan dari "hasilkan proyek Anda"
Tom