node-gyp คืออะไร


123

ใครช่วยอธิบายหน่อยได้ไหมว่าคืออะไรnode-gypและทำไมถึงใช้ไฟล์ระบบของฉันเพื่อสร้างแพ็คเกจ Node.JS

  1. ถ้า Ii สร้างโครงการโหนดและใช้node-gypภายใน
  2. จากนั้นฉันก็ทาโครงงานนั้นและย้ายไปยังระบบอื่น
  3. ฉันไม่เข้าใจที่นั่นและลองใช้มัน

แนวทางนี้จะได้ผลหรือไม่?


17
มันอธิบายไว้ในหน้า GitHub ของ: github.com/nodejs/node-gyp โดยทั่วไปเป็นเหมือนnode-gyp makeเป็นเครื่องมือที่ใช้ควบคุมกระบวนการคอมไพล์ของโปรเจ็กต์ C ++ เท่านั้นที่ออกแบบมาโดยเฉพาะสำหรับแอดออน node.js (โมดูลที่เขียนด้วย C ++) ดังนั้นการย้ายไปยังระบบอื่นอาจใช้งานได้หากใช้ CPU เดียวกัน การย้ายไปยัง OS หรือ CPU อื่น (เช่นจาก x86 เป็น ARM) จะไม่ทำงาน สำหรับ Linux การย้ายไปยัง distro เวอร์ชันอื่นของ distro เดียวกันอาจใช้งานได้หรือไม่ได้ ฉันไม่แน่ใจ 100% ว่าการย้ายไปยัง node.js เวอร์ชันอื่นจะใช้งานได้หรือไม่
slebetman

2
เมื่อฉันเรียกyarn why node-gypมันกลับมาพร้อมกับ: เพราะnode-sassดังนั้นฉันแน่ใจว่ามันมีประโยชน์อื่น ๆ sassแต่มันอาจจะอยู่ในโครงการของคุณถ้าคุณหรือคนที่คุณรักได้รับการวินิจฉัย
Kzqai

@slebetman ที่ย้ายไปยังเวอร์ชันโหนดอื่นจะไม่ทำงานไม่แน่ใจว่าเป็นจริง 100% หรือไม่ แต่จากประสบการณ์ของฉันคุณต้องลบ node-gyp เก่าหลังจากอัปเกรดเวอร์ชัน nodejs และในระหว่างการติดตั้งโมดูลจะสร้างใหม่โดยอัตโนมัติในพื้นหลัง
Lukas Liesis

คำตอบ:


134

node-gypเป็นเครื่องมือที่รวบรวม Node.js Addons Node.js Addons เป็นโมดูล Node.js ดั้งเดิมซึ่งเขียนด้วยภาษา C หรือ C ++ ซึ่งจำเป็นต้องรวบรวมไว้ในเครื่องของคุณ หลังจากคอมไพล์ด้วยเครื่องมือเช่น node-gyp แล้วฟังก์ชันของพวกเขาจะสามารถเข้าถึงได้ผ่านทางrequire()เช่นเดียวกับโมดูล Node.js อื่น ๆ

หากคุณทำตามที่แนะนำโมดูลไม่ได้ผลคุณจะต้องคอมไพล์ / สร้างด้วย node-gyp บนระบบที่คุณย้ายโปรแกรมไป

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

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


28
ต้องยอมรับฉันเห็นโมดูลที่ไม่มี npmjs ที่ใช้ node-gyp ฉันมักจะวิ่งห่างออกไป 10 ไมล์
PirateApp

38
เป็นเรื่องน่าตื่นเต้นที่ทุกวันนี้คุณสามารถโคลน (สิ่งที่ดูเหมือน) เว็บแอปที่ค่อนข้างเรียบง่ายที่เขียนด้วย NodeJS และในทันใดนั้นคุณต้องดาวน์โหลดซอฟต์แวร์เพื่อรวบรวมรหัสดั้งเดิมที่เขียนด้วยภาษา C และ C ++ ส่วนที่ดีที่สุดคือเมื่อคุณประสบปัญหาและคุณรู้ดีว่าทักษะการออกแบบเว็บของคุณทำอะไรเพื่อแก้ปัญหานี้
Jim Aho

3
@ Mr-Programs มันเชื่อมต่อผ่านการผูกซึ่งต้องเขียนโดยคุณ
vuza

2
@JimAho ตามหลักการแล้วและบ่อยครั้งรหัสเป็นเพียงกล่องดำ ข้อดีก็คือคุณสามารถใช้เครื่องมือที่รวดเร็วและได้รับการสนับสนุนอย่างดีเพื่อทำบางสิ่งบางอย่างเช่นแยกวิเคราะห์ xml และไม่ต้องรอพอร์ต js ซึ่งอาจช้าหรือเสียมากกว่า ที่กล่าวว่าฉันชอบเจ้าของภาษาทุกครั้งที่เป็นไปได้ แต่ฉันไม่แน่ใจว่าตำแหน่งนั้นดี นอกจากนี้ C / C ++ ควรพกพาได้มากสำหรับทุกกรณีที่ไม่ได้ขึ้นอยู่กับระบบปฏิบัติการโดยเจตนา (เช่นการแจ้งเตือน) นอกจากนี้แพ็คเกจที่มีแนวโน้มที่จะเกิดข้อผิดพลาดจะไม่เห็นการนำไปใช้อย่างกว้างขวางโดยไม่คำนึงถึงแหล่งที่มาของข้อบกพร่องดังกล่าว
Adam Tolley

3
FYI ฉันเชื่อว่า "
ทอม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.