node-gyp - 节点.js 土生土长的建筑工具
这是原作的叉子 非常好 node-gyp 仅添加了一个功能: 支持Node v12. Electron维护者采取了这一步骤,以确保我们社区能够轻松地在macOS Sequoia上建造他们的Electron App. 是这样的:
- Python 3.12 已经删除
distutils,哪个node-gyp取决于v10以下. - macOS Sequoia将其默认版本的Python更新为3.12.
- 当安装本地节点加通时,许多代码基础突然显示
ModuleNotFoundError: No module named 'distutils'对不完全了解相关依赖链的人来说 错误信息是加密的
这使得电源维护者有以下选择:
- 告诉社区手动安装 Python 3. 11 或
setuptools。在解决这个问题的同时,它需要人工用户干预,并要求我们的用户首先搜索出错误信息. - 升级到
node-gyp第10个。这需要一个最小节点.js版本,用于@electron/rebuild进而导致整个生态系统出现重大版本起伏。 如果用户不进行手动主要版本的升级,这个问题也不会解决. - 叉节点-gyp v10,使其与Node.js v12相兼容,只补丁我们的工具:我们选择了这个选项,以便尽快地和无痛地找到我们的用户.
Electron在它的行进图上在需要的Node.js版本中有一个大版本起伏. 一旦这样,我们就会落下这个叉子 回到原地 node-gyp。 。 。 .
原始读取器
node-gyp 是一个跨平台命令行工具,用 Node.js 为
为 Node.js 编译本地添加模块。 里面有一份出售的复制品
下一页 先前使用的项目
由Chromium团队负责,并推广到支持Node.js本土的发展
补入.
请注意: node-gyp 实值 没有 曾自建Node.js.
所有当前和LTS目标版本的Node.js都得到了支持. 取决于实际安装在您的系统中的 Node.js 版本
node-gyp 下载目标版本的必要开发文件或标题。 稳定节点.js版本列表可见于 节点.js网站。 。 。 .
特征
- 在任何支持的平台上执行相同的构建命令
- 支持针对不同版本的Node.js
安装
[重要] Python >= v3.12 要求
node-gyp>=v10
您可以安装 node-gyp 使用 npm数字 :
npm install -g node-gyp
根据您的操作系统, 您需要安装 :
在 unix 上
- 支持的 Python 版本
make- 适当的 C/C++ 编译器工具链, 如 海合会
在磁盘上
- 支持的 Python 版本
Xcode Command Line Tools将安装clang, (中文(简体) ),clang++,以及make。 。 。 .- 安装
Xcode Command Line Tools通过运行独立xcode-select --install. -- -- 或 -- -- - 或者,如果你已经拥有 已安装全部 Xcode,您可以在菜单下安装命令行工具
Xcode -> Open Developer Tool -> More Developer Tools...。 。 。 .
- 安装
在窗口上
安装工具 巧克力质数字 :
choco install python visualstudio2022-workload-vctools -y
或手动安装和配置 Python 和 Visual Studio 工具 :
-
安装当前 python 的版本 从 微软存储。 。 。 .
-
安装可视 C++ 构建环境:对于Visual Studio 2019或以后,使用
Desktop development with C++工作量 视觉工作室社区。对于比Visual Studio 2019年年长的版本,安装 Visual Studio 构建工具 与Visual C++ build tools选项.
如果以上步骤对你无效,请访问 微软的Windows节点.js 准则 额外提示.
在ARM上的Windows上瞄准本地的ARM64节点.js,加入"ARM64的Visual C++编译器和库"和"ARM64的Visual C++ ATL"等组件.
要在 ARM 上的 Windows 上使用本地的 ARM64 C++ 编译器, 请确保您有 Visual Studio 2022 17.4 或以后 已安装.
建议安装以下Powershell模块: 虚拟 使用 Install-Module VSSetup -Scope CurrentUser。 。 。 .
这将使得Visual Studio的检测逻辑能够使用更灵活更方便的方法,避免了Powershell的 ConstrainedLanguage 模式.
配置 Python 依赖性
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:\path\to\python.exe # CMD
$Env:npm_config_python="C:\path\to\python.exe" # PowerShell
-
如果
PYTHON环境变量设定为 Python 可执行文件的路径, 如果该版本是支持的版本,则该版本将被使用. -
如果
NODE_GYP_FORCE_PYTHON环境变量设定为路径 Python 可执行文件, 它将被使用, 而不是其它配置的或 内建 Python 搜索路径。 如果没有兼容的版本,就不再 搜索将完成 .
为第三方建立节点。 运行时
当为第三方节点(electron)等运行时
不同的构建配置与正式的节点.js发行,您
应使用 --dist-url 或者说 --nodedir 要指定标题的旗帜
运行时间来构建.
还有什么时候 --dist-url 或者说 --nodedir 标记通过,节点 -gyp将使用
config.gypi 在信头分发中运出以生成构建
配置,它不同于使用默认模式
process.config 对象.
一些旧版本的 Electron 运出错误 config.gypi 在标题中
分发,你可能需要通过 --force-process-config 到节点吉普
用于围绕配置错误工作.
如何使用
要编译您的本地加通, 请先到其根目录 :
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 文档.
现在,你会有一个 Makefile (在Unix平台上)或 a vcxproj 文件
(在窗口上) build/ 目录。 接下来,援引 build 命令 :
node-gyp build
现在你有你的编译 .node 装订文件! 编译的装订结束
内 build/Debug/ 或者说 build/Release/,取决于构建模式。 现在,
您可以要求 : .node 和Node.js一起进行测试!
说明: 创建 调试 构建绑定文件,通过 --debug (或
-d) 运行时切换 configure, (中文(简体) ), build 或者说 rebuild 命令.
这个 binding.gyp 文件
A 类 binding.gyp 文件描述构建模块的配置, 以
类似JSON的格式. 此文件会放在您的软件包的根中, 同时
package.json。 。 。 .
一条赤骨 gyp 适合构建节点.js addon的文件可能看起来像:
{
"targets": [
{
"target_name": "binding",
"sources": [ "src/binding.cc" ]
}
]
}
进一步阅读
这个 文档 目录中包含关于特定节点-gyp主题的额外文档,如果您在安装或使用节点-gyp构建添加符时遇到问题,这些文档可能有用.
为Node.js本地添加和写作提供一些额外资源 gyp 配置文件 :
图标
node-gyp 响应以下命令:
| 命令 | 说明 |
|---|---|
help | 显示帮助对话框 |
build | 调用 make编号 :msbuild.exe 并建造土生土长的加人 |
clean | 删除 build 如果存在目录 |
configure | 生成当前平台的项目构建文件 |
rebuild | 运行 clean, (中文(简体) ), configure 财务报告和审定财务报表 build 全部排成一行 |
install | 安装给定版本的 Node.js 头文件 |
list | 列出目前安装的节点.js头版本 |
remove | 删除给定版本的节点.js头文件 |
命令选项
node-gyp 接受下列命令选项:
| 命令 | 说明 |
|---|---|
-j n, (中文(简体) ), --jobs n | 运行 make 平行进行。 数值 max 将使用所有可用的 CPU 核心 |
--target=v6.2.1 | 要构建的节点.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 缓存目录) |
--ensure | 如果已经存在, 不要重新安装信头 |
--dist-url=$url | 从自定义 URL 下载信头 tarball |
--proxy=$url | 设置 HTTP( S) 代理下载信头 tarball |
--noproxy=$urls | 设定在下载信头 tarball 时忽略代理 |
--cafile=$cafile | 覆盖默认 CA 链( 下载 tarball) |
--nodedir=$path | 设置节点源代码的路径 |
--python=$path | 设置 Python 二进制的路径 |
--msvs_version=$version | 设置 Visual Studio 版本( 仅窗口) |
--solution=$solution | 设置 Visual Studio 解决方案版本( 只有窗口) |
--force-process-config | 使用运行时间强制 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\.gyp
npm v9 之前 npm 版本的配置
使用窗体 OPTION_NAME 用于上述任何命令选项.
例如,设置 devdir 等于 /tmp/.gyp你会跑:
npm config set [--global] devdir /tmp/.gyp
说明: 配置设置通过 npm 将仅在 node-gyp
运行通过 npm,而不是当 node-gyp 直接运行.
许可证
node-gyp 以麻省理工学院的许可证提供。 见 自由主义
文件 详细情况.