很多的nodejs框架底层都使用了node-gyp,而gyp安装又经常报错,各种费劲,特写此篇。
特别提示:如果你npm install失败,报错信息中有gyp…那么就是gyp安装或编译有问题了,尤其是windows下nodejs开发,gyp安装非常费劲。
node-gyp是什么
本机加载项生成工具, node-gyp
是一个跨平台命令行工具,在 Node.js 中编写,用于编译 Node.js 的本机加载项模块。它包含以前由Chromium 团队使用的 - next项目的供应商副本,该副本扩展以支持 Node . js 本机加载项的开发。
简单来说就是,google做的,gyp是为Chromium项目创建的项目生成工具,可以从平台无关的配置生成平台相关的Visual Studio、Xcode、Makefile的项目文件。这样一来我们就不需要花额外的时间处理每个平台不同的项目配置以及项目之间的依赖关系。后来nodejs也拿来用作生成平台无关的本机加载项生成工具。
源码在github:https://github.com/nodejs/node-gyp
特征
跨平台支持
- 跨Node.js不同版本支持
安装
安装需要条件:
- python环境
- c/c++编译工具链
- 国内的话还需要良好的网络环境(能访问外网)
您可以使用 安装:node-gyp``npm
npm install -g node-gyp
如果你npm失败了,看提示信息,要配置好以上环境在安装好gyp,然后在去npm install!!!不然会耽误很多很多功夫!
在 Unix 上安装
- Python v2.7、v3.5、v3.6、v3.7 或 v3.8
make
正确的 C/C++编译器工具链,如GCC
在 macos 上安装
注意:如果您的 Mac 已_升级到_macOS Catalina (10.15),请阅读macOS_Catalina.md。
Python v2.7、v3.5、v3.6、v3.7 或 v3.8
-
- 还需要通过运行 来安装 。或者,如果您已经安装了完整的Xcode,你可以在菜单下找到它们。此步骤将安装 和 。
XCode Command Line Tools``xcode-select --install``Xcode -> Open Developer Tool -> More Developer Tools...``clang``clang++``make
在Windows上
windows开发nondejs就是大坑(我已经浪费生命踩完了,好无奈)。
从微软应用商店包安装 Python的当前版本。选项 1
使用升级的 PowerShell 或 CMD.exe(以管理员身份运行)使用 Microsoft 的 Windows 构建工具安装所有必需的工具和配置。npm install --global windows-build-tools
npm下载失败的,就是网络被墙了,推荐使用tyarn下载**tyarn add windows-build-tools -g**
选项 2
手动安装工具和配置:
- 还需要通过运行 来安装 。或者,如果您已经安装了完整的Xcode,你可以在菜单下找到它们。此步骤将安装 和 。
安装可视化C++构建环境:可视化工作室构建工具(使用”可视化C++构建工具”工作负载)或 Visual Studio 2017 社区(使用”桌面开发与C++”工作负载)
- 启动 cmd,
npm config set msvs_version 2017
如果上述步骤不起作用,请访问 Microsoft 的Node.js Windows 指南以获取有关其他提示。
若要在 ARM 上的 Windows 10 上定位本机 ARM64 Node.js,请添加组件”ARM64 的可视化 C++ 编译器和库”和”用于 ARM64 的C++视觉或 ATL”。
配置 Python 依赖项
node-gyp要求您安装了兼容版本的 Python,其中一个版本:v2.7、v3.5、v3.6、v3.7 或 v3.8。如果安装了多个 Python 版本,可以确定应以以下方式之一使用哪个 Python 版本:node-gyp
通过设置命令行选项,例如:—python$ node-gyp --python /path/to/executable/python
如果通过 调用,并且安装了多个版本的 Python,则您可以将”python”配置键设置为相应的值:node-gypnpmnpm$ npm config set python /path/to/executable/python
如果环境变量设置为 Python 可执行文件的路径,则使用该版本(如果是兼容版本)。PYTHON
如果环境变量设置为 Python 可执行文件的路径,则它将用作任何其他配置或内置 Python 搜索路径。如果它不是兼容版本,则不会进行进一步搜索。NODE_GYP_FORCE_PYTHON
其他详细使用,命令,配置,参考源码说明文档:https://github.com/nodejs/node-gyp