node-gyp使用帮助

node-gyp是为了编译nodejs addon模块而构建的跨平台命令行工具。nodejs addon模块使用c++语言编写,在源代码级别进行分发,通过node-gyp实现跨平台的编译安装。

背景知识

node-gyp源于gyp。gyp是一个用来生成项目文件的工具,刚开始设计给chromium项目使用的。它可以从平台无关的配置生成平台相关的Visual Studio、Xcode、Makefile的项目文件,然后调用 vsbuild、xcode、gcc等编译平台来编译。这就不需要花额外的时间处理每个平台不同的项目配置以及项目之间的依赖关系。

nodejs addon模块采用源代码分发,安装需要根据不同平台采用合适的编译器编译安装,这就是node-gyp项目诞生的原由。

安装过程

安装node-gyp

在上线情况下,使用如下命令安装node-gyp:

1
$ npm install -g node-gyp

安装C++编译器

根据操作系统平台的不同,需安装对应的编译器,以方便node-gyp调用。以Windows平台为例,安装VC++编译器有两种方法:

  • 直接安装

    1
    2
    3
    // 以管理员身份打开cmd或powershell

    npm install --global --production windows-build-tools
  • 手动安装

    • 安装Visual C++构建环境: 使用Visual Studio Build Tools的Visual C++ build tools工作负载或者Visual Studio 2017 Community的Desktop development with C++工作负载。
    • 安装Python 2.7,不支持python3,然后运行npm config set python python2.7
    • 在cmd中运行npm config set msvs_version 2017

手动安装Visual C++构建环境的命令如下:

1
2
3
4
5
6
7
# 使用Visual Studio Build Tools的Visual C++ build tools工作负载,确保安装win10sdk,编译nodejs源码时需要

.\vs_buildtools__2041717674.1536666005.exe --layout d:\vc2017_offline --lang zh-CN --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended

# 使用Visual Studio 2017 Community的Desktop development with C++工作负载

.\vs_community__208176120.1522073957.exe --layout e:\vs2017_offline --lang zh-CN --add Microsoft.VisualStudio.Workload.CoreEditor --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended

node-gyp编译测试

以在Win10平台编译nodejs addon模块为例,在离线情况使用如下命令测试node-gyp是否工作正常:

1
2
3
node-gyp configure --nodedir=d:\node-v8.11.3

node-gyp build

参考链接

  1. node-gyp的作用是什么?,by zhihu.
  2. node-gyp, by nodejs
  3. Windows-Build-Tools, by felixrieseberg.
  4. Vistual Studio Community 2017 30天许可证过期,by 井底一蛤蟆.