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
В зависимости от вашей операционной системы вам нужно будет установить:
make
Xcode 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/python
node-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.gyp
npm
для версий NPM перед V9 Используйте форму OPTION_NAME
для любого из параметров команды, перечисленных выше.
Например, чтобы установить devdir
равный /tmp/.gyp
, вы запустите:
npm config set [--global] devdir /tmp/.gyp
ПРИМЕЧАНИЕ. Настройка конфигурации через npm
будет использоваться только при запуске node-gyp
через npm
, а не при запуске node-gyp
.
node-gyp
доступен по лицензии MIT. Смотрите файл лицензии для получения подробной информации.