1. 程式人生 > 其它 >node-gyp---Node.js的原生外掛構建工具

node-gyp---Node.js的原生外掛構建工具

寫成日期:2021/10/08 10:00 AM

原文地址:https://github.com/nodejs/node-gyp

node-gyp Node.js的原生外掛構建工具

我是一個跨平臺的命令列工具,在Node.js中使用,用於為Node.js編譯原生外掛模組。我包含了一個gyp-next的分叉(gyp-next之前由Chromium在使用),擴充套件用於支援Node.js原生外掛的開發。

吭吭,我不是用於構建Node.js自身的工具。

我支援Node.js的很多很多版本,從0.8到4、5、6...,嗯嗯截止目前我都支援,放心使用。

我提供的功能

  • 在已經支援的任意平臺上,使用同一種構建命令。

  • 相容Node.js的不同版本

我如何安裝

可以直接用 npm 進行安裝:npm install -g node-gyp

根據我將執行的作業系統,還需要安裝以下東西:

在Unix上

  • Python v3.6+

  • make

  • C/C++編譯工具鏈,如GCC

在macOS上

如果系統升到了macOS Catalina(10.15+),需要單獨看 macOS_Catalina.md

  • Python v3.6+

  • Xcode

    • 需要安裝XCode命令列工具,xcode-select --install

    • 如果已經安裝了完整的Xcode,要通過選單 Xcode -> Open Developer Tool -> More Developer Tools,進行clang、clang++、make的安裝

在Windows上

TODO

配置Python依賴

TODO

如何食用

第一步,進到需要編譯的原生外掛目錄下,cd my_node_addon

第二步,生成一個適合當前系統平臺的專案編譯檔案,node-gyp configure。在VC++2015上自動檢測失敗,需要手動新增指定,node-gyp configure --msvs_version=2015。配置步驟會在當前目錄找到building.gyp檔案,如何配置它見下面。

現在,build目錄下會包含一個Makefile(在Unix上)或一個vcxproj(在Windows上)。

第三步,構建,node-gyp build

接下來會生成 .node 的繫結檔案,編譯後的繫結檔案在 build/Debug 或 build/Release/ 中,這取決於構建的模式。Debug使用 --debug引數,重新進行 configure、build/rebuild。

現在,你可以通過 require 這個 .node 檔案來執行你的測試了!

building.gyp 檔案

它描述了待編譯模組的配置,類JSON格式,它與package.json一塊兒放在包的根目錄下。

適用於構建Node.js外掛的gyp示例:

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

擴充套件閱讀

docs目錄下包含一些額外的文件,描述了一些關於node-gyp的特定主題,可能對你進行安裝或構建產生幫助。

一些非官方的寫的不錯的教程:

我有哪些命令

  • help,顯示幫助文件

  • build,使用make/msbuild.exe構建原生外掛

  • clean,移除build資料夾

  • configure,生成適配當前平臺的專案構建檔案

  • rebuild,執行clean、configure、build

  • install,安裝給定版本的Node.js標頭檔案

  • list,列出當前安裝的Node.js標頭檔案的版本

  • remove,移除給定版本的Node.js標頭檔案

命令可選引數

  • -j n, --jobs n,並行執行make,取決於最大系統核心數

  • --target=v6.2.1,指定Node.js版本,預設使用process.version

  • --silly, --longlevel=silly,列印所有進度到控制檯

  • --verbose, --loglevel=verbose,列印大多數進度到控制檯

  • --silent, --loglevel=silent,不列印任何東西

  • debug, --dbueg,使用Debug構建,預設是Release

  • -C $dir, --directory=$dir,在不同的資料夾中跑命令

  • --make=$make,重寫make命令,比如gmake

  • --thin=yes,使用精簡靜態庫

  • --arch=$arch,設定目標架構,如 ia32

  • --tarball=$path,從本地tarball獲取標頭檔案

  • --devdir=$path,SDK下載目錄,預設使用OS快取目錄

  • --ensure,如果標頭檔案已經存在則不重新安裝

  • --dist-url=$url,從自定義URL中下載標頭檔案

  • --proxy=$url,設定HTTP(S)代理,用於下載header tarball

  • --noproxy=$urls,設定下載header tarball時需要忽略代理的URLs

  • --cafile=$cafile,重寫預設的CA chain,用於下載header tarball

  • --nodedir=$path,設定node原始碼的路徑

  • --python=$path,設定Python二進位制的路徑

  • --msvs_version=$version,設定Visual Studio版本(Windows專用)

  • --solution=$solution,設定Visual Studio Solution版本(Windows專用)

配置

環境變數

舉例,將 devdir 設定為 /tmp/.gyp,

export npm_config_devdir=/tmp/.gypset npm_config_devdir=c:\temp\.gyp

npm配置

舉例,將 devdir 設定為 /tmp/.gyp,

npm config set [--global] devdir /tmp/.gyp

許可證

MIT