侧边栏壁纸
  • 累计撰写 218 篇文章
  • 累计创建 59 个标签
  • 累计收到 5 条评论

node-gyp 文档笔记

barwe
2022-08-23 / 0 评论 / 0 点赞 / 3,998 阅读 / 1,488 字
温馨提示:
本文最后更新于 2022-08-23,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

node-gyp

github: https://github.com/nodejs/node-gyp

node-gyp 是为 Node.js 编写的用于构建 原生插件(native addon)模块的、跨平台 的命令行工具。

它继承自 Chromium 团队先前使用的 gyp-next 项目,用以适应 Node.js 原生插件的不断发展。

node-gyp 虽然是用来构建 Node.js 原生模块的,但它并不用于构建 Node.js 本身。

安装 node-gyp 时不挑剔 Node.js 的版本,它会自动下载对应版本需要的文件。

Installation

npm i -g node-gyp

除此之外,还需要安装 Python 依赖、make 工具和 C/C++ 编译器工具链,不同的系统有不同的安装方式,参考 installation

为 node-gyp 指定特定的版本

  1. 执行 node-gyp 命令时直接指定 python 的路径:
node-gyp <command> --python /path/to/executable/python
  1. 如果通过 npm 调用 node-gyp,可以配置 npm 的 python 路径:
npm config set python /path/to/executable/python
  1. 设置 PYTHON 环境变量,使其指向 python 的可执行程序路径。

  2. 设置 NODE_GYP_FORCE_PYTHON 环境变量强制 node-gyp 使用指定的 python 版本。

用于第三方运行时

第三方运行时(例如 Electron)与 Node.js 官方版本的配置存在差异,使用--dist-url或者--nodedir指定运行时的 headers。

当使用--dist-url或者--nodedir时,node-gyp 将使用特定的 headers(config.gypi)来生成构建配置,而默认情况下它使用的是 Node.js 运行时提供的process.config对象。

旧版本的 Electron 可能在 headers 分发中使用了不规范的 cofig.gypi,此时可能需要使用--force-process-config参数来解决配置错误。

怎么使用 node-gyp

原生插件本身就是一个项目(目录),要构建这个原生插件,我们先进入到原生插件的项目目录:

cd my_node_addon

使用 configure 子命令针对 当前的操作系统 生成构建文件:

node-gyp configure

这一步会读取当前目录下的 binding.gyp 文件,所以我们需要有一个 binding.gyp 文件。

Windows 系统上,可能还需要配置 Visual C++ 构建工具链(需要先安装):

node-gyp configure --msvs_version=2015

执行完配置命令后,会在 build/ 下生成 Makefile (on Unix) or vcxproj (on Windows) 文件。

调用构建命令:

node-gyp build

执行构建命令后,将按照构建的模式在 build/Release/ or build/Debug/ 目录下生成 .node 文件,这个文件就是我们需要的原生插件,可以在 Node.js 中被引入和调用。

binding.gyp 文件

binding.gyp 文件是位于插件项目根目录下的 JSON 文件,描述了怎么构建原生插件的配置。

一个能够用于构建插件的最精简的配置:

{
    "target": [
        {
            "target_name": "binding",
            "sources": [
                "src/binding.cc"
            ]
        }
    ]
}

深入了解

docs

0

评论区