Что такое нод-гип

Может ли кто-нибудь объяснить мне, что такое node-gyp и почему он использует мои системные файлы для сборки пакетов Node.JS.

  1. Если я создам проект узла, и он использует node-gyp внутри.
  2. Затем я просто запускаю этот проект и перехожу на другую систему.
  3. Я распаковываю его там и пытаюсь использовать

Будет ли работать этот подход?


person selftaught91    schedule 28.09.2016    source источник
comment
Это описано на странице github: github.com/nodejs/node-gyp. По сути, node-gyp похож на make. Это инструмент, используемый для управления процессом компиляции проектов C++. Только он разработан специально для аддонов node.js (модулей, написанных на C++). Таким образом, переход на другую систему может сработать, если она использует тот же ЦП. Переход на другую ОС или ЦП (например, с x86 на ARM) не сработает. Для Linux переход на другой дистрибутив другой версии того же дистрибутива может работать, а может и не работать. Я не уверен на 100%, сработает ли переход на другую версию node.js.   -  person slebetman    schedule 28.09.2016
comment
Когда я запускаю yarn why node-gyp, он возвращается с: потому что node-sass, поэтому я уверен, что у него есть и другие применения, но он может быть в вашем проекте, если у вас или у кого-то из ваших близких был диагностирован sass.   -  person Kzqai    schedule 25.03.2020
comment
@slebetman переход на другую версию узла не сработает, не уверен, что это на 100% верно, но по моему опыту вам нужно удалить старый node-gyp после обновления версии nodejs, и во время установки модулей он автоматически перестраивается в фоновом режиме.   -  person Lukas Liesis    schedule 18.04.2020


Ответы (1)


node-gyp — это инструмент, который компилирует дополнения Node.js. Надстройки Node.js — это нативные модули Node.js, написанные на C или C++, поэтому их необходимо скомпилировать на вашем компьютере. После того, как они скомпилированы с помощью таких инструментов, как node-gyp, к их функциям можно получить доступ через require(), как и к любому другому модулю Node.js.

Если вы сделаете то, что предложили, модуль не будет работать, вам нужно будет скомпилировать его/собрать с помощью node-gyp в системе, в которую вы переместили программу.

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

Дополнения Node.js: https://nodejs.org/api/addons.html

person vuza    schedule 28.09.2016
comment
Должен признать, я вижу модуль без npmjs, который использует node-gyp. Я обычно бегу за 10 миль - person PirateApp; 05.09.2018
comment
Удивительно, что в настоящее время вы можете клонировать (казалось бы) относительно простое веб-приложение, написанное на NodeJS, и вдруг вам нужно загрузить программное обеспечение для компиляции собственного кода, написанного на C и C++. Самое приятное, когда вы сталкиваетесь с проблемами, и вы точно знаете, что делать с вашими навыками веб-дизайна, чтобы решить эту проблему. - person Jim Aho; 18.12.2018
comment
так что вы можете использовать node-gyp для запуска ЛЮБОГО кода c/c++? это преобразуется в javascript или выполняется как есть и подключается через привязку? - person Mr-Programs; 14.01.2019
comment
@Mr-Programs Подключается через привязку, которую тоже нужно написать вам - person vuza; 16.01.2019
comment
@JimAho В идеале и часто код просто помещается в черный ящик. Хорошо то, что вы можете использовать быстрые и хорошо поддерживаемые инструменты для выполнения конкретных задач, таких как синтаксический анализ xml, и вам не нужно ждать порта js, который может быть медленнее или более неработоспособным. Тем не менее, я предпочитаю нативный js, когда это возможно, но я не уверен, что эта позиция хорошо обоснована. Кроме того, C/C++ должен быть очень переносимым для любого случая, который целенаправленно не зависит от ОС (например, уведомления). Кроме того, подверженные ошибкам пакеты не получают широкого распространения независимо от источника указанных ошибок. - person Adam Tolley; 29.08.2019
comment
К вашему сведению, я считаю, что gyp — это сокращение от «генерировать ваши проекты». - person Tom; 23.10.2019
comment
@PirateApp Я не понимаю, не могли бы вы объяснить другими словами? Ваш комментарий высокорепутационный, вот и хочу узнать - вам не нравится node-gyp и убегаете? - person Timo; 14.05.2021
comment
node-gyp создает собственные зависимости, и заставить его работать во внешней среде, такой как докер или виртуальная машина, кажется проблемой, возьмите bcrypt.js, он, безусловно, работает намного быстрее, если вы используете собственный, но из-за того, что это боль, я переключился на bcryptjs, который не требует node-gyp - person PirateApp; 15.05.2021