Node-gyp là gì


123

Bất cứ ai có thể giải thích cho tôi biết là gì node-gypvà tại sao nó sử dụng các tệp hệ thống của tôi để xây dựng các gói Node.JS.

  1. Nếu tôi xây dựng một dự án nút và nó được sử dụng node-gyptrong nội bộ.
  2. Sau đó, tôi chỉ định dự án đó và chuyển sang một hệ thống khác
  3. Tôi mở nó ra ở đó và cố gắng sử dụng nó

Liệu cách tiếp cận này có hiệu quả không?


17
Nó được mô tả trên trang github: github.com/nodejs/node-gyp . Về cơ bản, node-gyplà như thế nào make. Đó là một công cụ được sử dụng để kiểm soát quá trình biên dịch của các dự án C ++. Chỉ, nó được thiết kế đặc biệt cho các addon node.js (các mô-đun được viết bằng C ++). Vì vậy, chuyển sang một hệ thống khác có thể hoạt động nếu nó sử dụng cùng một CPU. Chuyển sang hệ điều hành hoặc CPU khác (ví dụ: từ x86 sang ARM) sẽ không hoạt động. Đối với Linux, việc chuyển sang một bản phân phối khác của phiên bản khác của cùng một bản phân phối có thể hoạt động hoặc có thể không hoạt động. Tôi không chắc chắn 100% nếu chuyển sang một phiên bản khác của node.js có hoạt động hay không
slbetman

2
Khi tôi chạy yarn why node-gypnó trở lại với: bởi vì node-sass, vì vậy tôi chắc chắn rằng nó có những công dụng khác, nhưng nó có thể nằm trong dự án của bạn nếu bạn hoặc người bạn yêu đã được chẩn đoán sass.
Kzqai

@slebetman chuyển sang phiên bản nút khác sẽ không hoạt động, không chắc điều đó có đúng 100% hay không, nhưng theo kinh nghiệm của tôi, bạn cần xóa nút-gyp cũ sau khi nâng cấp phiên bản nodejs và trong quá trình cài đặt mô-đun, nó sẽ tự động xây dựng lại trong nền.
Lukas Liesis

Câu trả lời:


134

node-gyplà một công cụ biên dịch các Addon Node.js. Node.js Addons là các Mô-đun Node.js nguyên bản, được viết bằng C hoặc C ++, do đó cần được biên dịch trên máy của bạn. Sau khi chúng được biên dịch bằng các công cụ như node-gyp, chức năng của chúng có thể được truy cập thông qua require(), giống như bất kỳ Mô-đun Node.js nào khác.

Nếu bạn làm những gì bạn đề xuất, mô-đun không hoạt động, bạn sẽ cần phải biên dịch nó / xây dựng nó với node-gyp trên hệ thống mà bạn đã chuyển chương trình sang.

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

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


28
phải thừa nhận, tôi thấy một mô-đun không npmjs rằng sử dụng nút-đầy tớ trường trung học tôi thường chạy 10 dặm
PirateApp

38
Thật thú vị khi ngày nay bạn có thể sao chép một ứng dụng web (có vẻ như) tương đối đơn giản được viết bằng NodeJS, và đột nhiên bạn phải tải xuống phần mềm để biên dịch coden gốc được viết bằng C và C ++. Phần tốt nhất là khi bạn gặp phải vấn đề và bạn biết chính xác phải làm gì với kỹ năng thiết kế web của mình để giải quyết vấn đề này.
Jim Aho

3
@ Mr-Chương Nó được kết nối thông qua một ràng buộc, mà cũng cần được viết bởi bạn
vuza

2
@JimAho Tốt nhất, và thường thì mã chỉ được đóng hộp đen. Điều tốt là bạn có thể sử dụng các công cụ nhanh và được hỗ trợ tốt để thực hiện những việc cụ thể như phân tích cú pháp xml và không phải đợi cổng js có thể chậm hơn hoặc bị hỏng nhiều hơn. Điều đó nói rằng, tôi thích js bản địa bất cứ khi nào có thể, nhưng tôi không chắc rằng vị trí đó đã được xây dựng tốt. Ngoài ra, C / C ++ nên rất linh hoạt cho bất kỳ trường hợp nào không có mục đích phụ thuộc vào hệ điều hành (như thông báo). Hơn nữa, các gói dễ bị lỗi không được chấp nhận rộng rãi bất kể nguồn gốc của các lỗi đã nêu.
Adam Tolley

3
FYI, tôi tin rằng "gyp" là viết tắt của "tạo ra các dự án của bạn"
Tom
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.