node-gyp - Node.js Native Addon Tool 
node-gyp -это кроссплатформенный инструмент командной строки, записанный в node.js для составления нативных модулей аддона для node.js. Он содержит копию поставленного проекта Gyp-Next, который ранее использовался командой Chromium и расширилась для поддержки разработки нативных аддон Node.js.
Обратите внимание, что node-gyp не используется для создания самого Node.js.
Все текущие и LTS -целевые версии Node.js поддерживаются. В зависимости от того, какая версия node.js фактически установлена на системном node-gyp загружает необходимые файлы или заголовки разработки для целевой версии. Список версий стабильного Node.js можно найти на веб -сайте node.js.
Важный
Python> = v3.12 Требуется node-gyp > = v10
Вы можете установить node-gyp с помощью npm :
npm install -g node-gypВ зависимости от вашей операционной системы вам нужно будет установить:
makeXcode Command Line Tools , которые установит clang , clang++ и make .Xcode Command Line Tools , используя xcode-select --install . -- ИЛИ --Xcode -> Open Developer Tool -> More Developer Tools...Установите инструменты с шоколадным:
choco install python visualstudio2022-workload-vctools -yИли вручную установить и настроить инструменты Python и Visual Studio:
Установите текущую версию Python в магазине Microsoft.
Установите визуальную среду сборки C ++: для Visual Studio 2019 или более поздней версии используйте Desktop development with C++ от сообщества Visual Studio. Для версии старше, чем Visual Studio 2019, установите инструменты Visual Studio Build с опцией Visual C++ build tools .
Если приведенные выше шаги не работали для вас, пожалуйста, посетите руководящие принципы Microsoft Node.js для Windows для получения дополнительных советов.
Чтобы нацелиться на Native Arm64 Node.js на Windows на ARM, добавьте компоненты «Визуальные компиляторы C ++ и библиотеки для ARM64» и «Visual C ++ ATL для ARM64».
Чтобы использовать собственный компилятор ARM64 C ++ на Windows на ARM, убедитесь, что у вас установлен Visual Studio 2022 17.4 или более поздний цвет.
Рекомендуется установить после модуля PowerShell: VSSetup с использованием Install-Module VSSetup -Scope CurrentUser . Это сделает логику обнаружения Visual Studio для использования более гибкого и доступного метода, избегая режима PowerShell ConstrainedLanguage .
node-gyp требует, чтобы вы установили поддерживаемую версию Python. Если у вас установлено несколько версий Python, вы можете определить, какая версия node-gyp должна использовать одним из следующих способов:
--python командной строки», например: node-gyp < command > --python /path/to/executable/pythonnode-gyp вызывается в виде npm , и у вас есть несколько версий Python, вы можете установить переменную среды npm_config_python для соответствующего пути: export npm_config_python=/path/to/executable/pythonИли в окнах:
py --list-paths # To see the installed Python versions
set npm_config_python=C:pathtopython.exe # CMD
$Env:npm_config_python="C:pathtopython.exe" # PowerShell Если переменная среды PYTHON установлена на путь исполняемого файла Python, то эта версия будет использоваться, если она является поддерживаемой версией.
Если переменная среды NODE_GYP_FORCE_PYTHON установлена на путь исполняемого Python, она будет использоваться вместо любого из других настроенных или встроенных путей поиска Python. Если это не совместимая версия, дальнейший поиск не будет выполнена.
При построении модулей для стороннего Node.js Times, например, Electron, которые имеют различные конфигурации сборки из официального дистрибуции Node.js, вы должны использовать --dist-url или --nodedir Flags для указания заголовков времени выполнения для строительства для построения Полем
Кроме того, когда проходят флаги --dist-url или --nodedir , Node-GYP будет использовать config.gypi отправленный в распределение заголовков для создания конфигураций сборки, что отличается от режима по умолчанию, который будет использовать процесс. process.config объект экземпляр работы Node.js.
Некоторые старые версии электронов поставляли узоловые конфигурации. config.gypi в своих распределениях заголовков, и вам, возможно, потребуется перенести --force-process-config к узлому GYP для работы вокруг ошибок конфигурации.
Чтобы скомпилировать свой родной аддон, сначала перейдите в свой корневой каталог:
cd my_node_addon Следующим шагом является генерация соответствующих файлов сборки проекта для текущей платформы. Используйте configure для этого:
node-gyp configure Автоодащение не удается для визуальных инструментов сборки C ++ 2015, поэтому необходимо добавить --msvs_version=2015 (не требуется при запуске NPM, как настроено выше):
node-gyp configure --msvs_version=2015 ПРИМЕЧАНИЕ . Шаг configure ищет файл binding.gyp в текущем каталоге для процесса. См. Ниже инструкции по созданию файла binding.gyp .
Теперь у вас будет либо Makefile (на платформах UNIX), либо файл vcxproj (в Windows) в каталоге build/ каталога. Далее, призвать команду build :
node-gyp build Теперь у вас есть собранной файл .node . Скомпилированные привязки заканчиваются в build/Debug/ или build/Release/ , в зависимости от режима сборки. На этом этапе вам может потребоваться файл .node с node.js и запустить ваши тесты!
ПРИМЕЧАНИЕ. Чтобы создать отладочную сборку файла привязки, передайте коммутатор --debug (или -d ) при запуске команд configure , build или rebuild .
binding.gyp Файл binding.gyp описывает конфигурацию для создания вашего модуля в формате, подобном JSON. Этот файл помещается в корень вашего пакета вместе с package.json .
Файл gyp Barebones, подходящий для создания Addon node.js, может выглядеть так:
{
"targets" : [
{
"target_name" : "binding" ,
"sources" : [ "src/binding.cc" ]
}
]
}Справочник DOCS содержит дополнительную документацию по конкретным темам узла-GYP, которые могут быть полезны, если у вас возникают проблемы с установкой или строительством аддонов с помощью узла-гипа.
Некоторые дополнительные ресурсы для Node.js Нативные аддоны и написание файлов конфигурации gyp :
node-gyp отвечает на следующие команды:
| Командование | Описание |
|---|---|
help | Показывает диалог справки |
build | Вызывает make / msbuild.exe и строит родной аддон |
clean | Удаляет каталог build если он существует |
configure | Генерирует файлы сборки проекта для текущей платформы |
rebuild | Запускает clean , configure и build все подряд |
install | Установка файлов заголовков Node.js для данной версии |
list | Перечисляет в настоящее время установленные версии заголовка Node.js |
remove | Удаляет файлы заголовка Node.js для данной версии |
node-gyp принимает следующие параметры команды:
| Командование | Описание |
|---|---|
-jn , --jobs n | Запустить make параллельно. Значение max будет использовать все доступные ядра процессора |
--target=v6.2.1 | Версия node.js для создания (по умолчанию is process.version ) |
--silly , --loglevel=silly | Войти в все прогресс в консоли |
--verbose , --loglevel=verbose | Войти |
--silent , --loglevel=silent | Не регистрируйся, чтобы утешить |
debug , --debug | Сделайте сборку отладки (по умолчанию Release ) |
--release , --no-debug | Сделайте сборку релиза |
-C $dir , --directory=$dir | Запустите команду в другом каталоге |
--make=$make | Переопределить команду make (например, gmake ) |
--thin=yes | Включить тонкие статические библиотеки |
--arch=$arch | Установить целевую архитектуру (например, IA32) |
--tarball=$path | Получите заголовки от местного тарбола |
--devdir=$path | СПАСПРАВЛЕНИЕ SDK (по умолчанию есть каталог кэша ОС) |
--ensure | Не переустановите заголовки, если уже присутствует |
--dist-url=$url | Скачать заголовок Tarball с пользовательского URL |
--proxy=$url | Установите прокси HTTP (S) для загрузки заголовка Tarball |
--noproxy=$urls | Установите URL -адреса, чтобы игнорировать прокси при загрузке заголовка Tarball |
--cafile=$cafile | Переопределить цепочку CA по умолчанию (для загрузки Tarball) |
--nodedir=$path | Установите путь в исходный код узла |
--python=$path | Установить путь к бинарному питону |
--msvs_version=$version | Установить версию Visual Studio (только Windows) |
--solution=$solution | Установить версию решения Visual Studio (только Windows) |
--force-process-config | Принудительное использование объекта process.config Config для генерации файла config.gypi |
Используйте форму npm_config_OPTION_NAME для любого из вариантов команды, перечисленных выше (тире в именах опций должны быть заменены на подставки).
Например, чтобы установить devdir равную /tmp/.gyp , вы бы:
Запустите это на Unix:
export npm_config_devdir=/tmp/.gypИли это на Windows:
set npm_config_devdir=c:temp.gypnpm для версий NPM перед V9 Используйте форму OPTION_NAME для любого из параметров команды, перечисленных выше.
Например, чтобы установить devdir равный /tmp/.gyp , вы запустите:
npm config set [--global] devdir /tmp/.gyp ПРИМЕЧАНИЕ. Настройка конфигурации через npm будет использоваться только при запуске node-gyp через npm , а не при запуске node-gyp .
node-gyp доступен по лицензии MIT. Смотрите файл лицензии для получения подробной информации.