node-gyp -Node.js本机插件构建工具
node-gyp是用node.js编写的跨平台命令行工具,用于编译Node.js的本机插件模块。它包含了GYP-NEXT项目的供应商副本,该副本以前曾由Chromium Team使用并扩展以支持Node.js本机插件的开发。
请注意, node-gyp不用于构建node.js本身。
支持Node.js的所有当前和LTS目标版本。根据系统node-gyp上实际安装了哪个版本的Node.js,下载了目标版本的必要开发文件或标题。稳定node.js版本的列表可以在Node.js网站上找到。
重要的
python> = v3.12需要node-gyp > = v10
您可以使用npm安装node-gyp :
npm install -g node-gyp根据操作系统,您需要安装:
makeXcode Command Line Tools将安装clang , clang++和make 。xcode-select --install安装Xcode Command Line Tools独立安装。 - 或者 - Xcode -> Open Developer Tool -> More Developer Tools...下安装命令行工具。安装带有巧克力的工具:
choco install python visualstudio2022-workload-vctools -y或手动安装和配置Python和Visual Studio工具:
从Microsoft Store安装当前版本的Python。
安装Visual C ++构建环境:对于Visual Studio 2019或更高版本,请使用Visual Studio社区的Desktop development with C++ 。对于比Visual Studio 2019年龄较大的版本,请使用Visual C++ build tools选项安装Visual Studio构建工具。
如果以上步骤不适合您,请访问Microsoft的Node.js Windows指南以获取其他提示。
要靶向ARM上窗户上的本地ARM64 Node.js,请添加组件“ ARM64的Visual C ++编译器和库”和“ ARM64的Visual C ++ ATL”。
要在手臂上的Windows上使用本机ARM64 C ++编译器,请确保您安装了Visual Studio 2022 17.4或更高版本。
建议使用Install-Module VSSetup -Scope CurrentUser安装以下powerShell模块:vSetup。这将使Visual Studio检测逻辑使用更灵活和可访问的方法,从而避免PowerShell的ConstrainedLanguage模式。
node-gyp要求您安装了Python支持的版本。如果已安装了多个版本的Python,则可以识别以下方式应使用的版本node-gyp :
--python命令行选项,例如: node-gyp < command > --python /path/to/executable/pythonnpm调用node-gyp ,并且已安装了多个版本的Python,则可以将npm_config_python环境变量设置为适当的路径: export npm_config_python=/path/to/executable/python或在Windows上:
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发行版具有不同构建配置的第三方node.js runtimes等第三方节点的模块时,您应该使用--dist-url或--nodedir标志来指定运行时的标头以构建用于构建的标题。 。
同样,当传递--dist-url或--nodedir标志时,Node-GYP将使用config.gypi在标题分布中运送的gypi生成构建配置,这与使用process.config对象的默认模式不同运行node.js实例。
电子的一些旧版本在其标题分布中发货的畸形config.gypi ,您可能需要通过--force-process-config来节点GYP,以解决配置错误。
要编译本机插件首先转到其根目录:
cd my_node_addon下一步是为当前平台生成适当的项目构建文件。为此使用configure :
node-gyp configure Visual C ++构建工具2015的自动检测失败,因此--msvs_version=2015需要添加(如上所述,NPM运行时不需要):
node-gyp configure --msvs_version=2015注意: configure步骤在当前目录中查找binding.gyp文件以进行处理。有关创建binding.gyp文件的说明,请参见下文。
现在,您将在build/ Directory中拥有一个Makefile (在UNIX平台上)或vcxproj文件(在Windows上)。接下来,调用build命令:
node-gyp build现在,您已编译了.node Bindings文件!根据构建模式,编译的绑定最终以build/Debug/或build/Release/ 。此时,您可以使用Node.js的.node文件并运行测试!
注意:要创建绑定文件的调试构建,请在运行configure , build或rebuild命令时传递--debug (或-d )开关。
binding.gyp文件binding.gyp文件描述了以类似JSON格式构建模块的配置。该文件与package.json一起放在软件包的根部。
适用于构建节点的Barenropons gyp文件可能看起来像:
{
"targets" : [
{
"target_name" : "binding" ,
"sources" : [ "src/binding.cc" ]
}
]
}DOCS目录包含有关特定节点GYP主题的其他文档,如果您使用Node-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将使用所有可用的CPU内核 |
--target=v6.2.1 | node.js版本要构建(默认为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下载目录(默认为OS Cache目录) |
--ensure | 如果已经存在,请不要重新安装标题 |
--dist-url=$url | 从自定义URL下载标题TARBALL |
--proxy=$url | 设置HTTP(S)代理以下载标头TARBALL |
--noproxy=$urls | 下载标头tarball时,设置了忽略代理的URL |
--cafile=$cafile | 覆盖默认的CA链(下载Tarball) |
--nodedir=$path | 将路径设置为节点源代码 |
--python=$path | 设定了Python二进制的路径 |
--msvs_version=$version | 设置Visual Studio版本(仅Windows) |
--solution=$solution | 设置Visual Studio解决方案版本(仅Windows) |
--force-process-config | 强制使用Runtime的process.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配置使用上面列出的任何命令选项的表单OPTION_NAME 。
例如,要将devdir设置为等于/tmp/.gyp ,您将运行:
npm config set [--global] devdir /tmp/.gyp注意:仅当通过npm运行节点node-gyp ,而不是直接运行node-gyp时,才会使用npm的配置集。
node-gyp可根据MIT许可获得。有关详细信息,请参见许可证文件。