1. 程式人生 > 實用技巧 >node-gyp - Node.js 本地外掛構建工具

node-gyp - Node.js 本地外掛構建工具

node-gyp - Node.js 本地外掛構建工具

翻譯自:nodejs/node-gyp:Node.js native addon build tool

node-gyp是用Node.js編寫的跨平臺命令列工具,用於為Node.js編譯本機附加模組。它包含gyp-next專案的供應商副本,該副本以前由Chromium團隊使用,已擴充套件用來支援Node.js本機外掛的開發。

請注意,node-gyp並不用於構建Node.js本身。

支援Node.js的多個目標版本(0.8,...,456等),無需顧及系統安裝的版本(node-gyp會下載目標版本所需的開發檔案或標頭檔案)。

特性

  • 各個受支援平臺都使用相同的構建命令執行
  • 支援不同的Node.js目標版本

安裝

你可以使用npm安裝node-gyp

npm install -g node-gyp

根據你的作業系統,你需要安裝:

在Unix上

  • Python v2.7, v3.5, v3.6, v3.7, or v3.8
  • make
  • 一個合適的C/C++編譯器工具鏈,像GCC

在macOS上

注意:如果你的Mac升級到macOS Catalina(10.15),請閱讀macOS_Catalina.md.

  • Python v2.7, v3.5, v3.6, v3.7, or v3.8
  • Xcode
    • 你需要通過執行xcode-select --install來安裝XCode Command Line Tools
      (XCode 命令列工具)。或者,你已經安裝了完整的Xcode,你可以在選單Xcode -> Open Developer Tool -> More Developer Tools...(Xcode -> 開啟開發者工具 -> 更多開發者工具...)下找到它們。此步驟將安裝clangclang++make

在Windows上

Microsoft Store軟體包中安裝最新版本的Python。

選項1

通過提升許可權的PowerShell或CMD.exe(以管理員執行)來使用微軟的windows-build-tools安裝所有必需的工具和配置。
npm install --global --production windows-build-tools

選項2

安裝工具並手動配置

如果上述步驟對你沒用,請訪問微軟的Windows Node.js指南以獲取其他提示。

以本地 ARM 上的 Windows 10 上的 ARM64 Node.js 為目標,請新增“ARM64的Visuall C++ 編譯器和庫”和“ARM64的 Visual C++ ATL”元件。

配置 Python 依賴項

node-gyp要求你安裝以下其中一個相容的Python版本: v2.7, v3.5, v3.6, v3.7, or v3.8。如果你安裝了多個Python版本,你可以用以下方式之一確定一個node-gyp可以使用的Python版本

  1. 通過設定--python命令列選項,例如:
node-gyp <command> --python /path/to/executable/python
  1. 如果用npm的方式呼叫node-gyp,並且你安裝了多個版本的Python,那麼你可以設定npm的'python'配置鍵為適當的值。
npm config set python /path/to/executable/python
  1. 如果PYTHON環境變數設定到一個Python可執行檔案的路徑,那麼該版本將被使用,如果它是一個相容的版本。
  2. 如果NODE_GYP_FORCE_PYTHON環境變數設定到一個Python可執行檔案,它將被使用,作為所有其他已配置或內建Python搜尋路徑的代替。如果不是相容版本,將不會完成進一步的搜尋。

如何使用

要編譯本地附加模組,首先轉到它的根目錄:

cd my_node_addon

下一步是為當前平臺生成合適的專案構建檔案。為此使用下列命令:

node-gyp configure

對Visual C++ Build Tools 2015自動偵測失敗,所以需要新增--msvs_version=2015(用npm執行如上配置時不需要):

node-gyp configure --msvs_version=2015

configure這一步尋找了在當前目錄的binding.gyp檔案去處理。往下看以獲取建立binding.gyp的指示。

現在你將會有Makefile(在Unix平臺上)或者是在build/目錄中的vcxproj檔案(在Windows上)。接下來,呼叫build命令:

node-gyp build

現在你有了你的已編譯的.node捆綁檔案!已編譯的捆綁檔案以build/Debug/還是以build/Release/結束,取決於構建模式。至此,您可以使用帶有Node.js的.node檔案並執行測試!
:建立捆綁檔案的除錯版本,當執行configurebuild,或者rebuild命令時經過--debug(或者-d)開關。(通過--debug/-d開關執行configurebuild,或者rebuild命令?)

binding.gyp檔案

binding.gyp檔案以類似於JSON的格式描述了構建模組的配置。這個檔案和package.json都在包的根目錄下。

一個適用於構建Node.js外掛的準gyp檔案應該長這樣:

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

延伸閱讀

一些Node.js本地外掛和編寫gyp配置檔案的補充資源:

Commands(命令)

node-gyp 響應以下命令:

命令 描述
help 顯示幫助日誌
build 呼叫make/msbuild.exe並且構建本地外掛
clean 刪除build目錄,如果存在
configure 為當前平臺生成專案構建檔案
rebuild 連續執行clean,configurebuild
install 為給定版本安裝Node.js標頭檔案
list 列出當前已安裝的Node.js頭版本
remove 為給定版本移除Node.js標頭檔案

Command Options(命令項)

node-gyp接受以下命令選項:

命令 描述
-j n,--jobs n 並行執行makemax值將使用所有可用的CPU核心
--target=v6.2.1 要為其構建的Node.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命令(e.g. gmake)
--thin=yes 啟用精簡資料庫
--arch=$arch 設定目標架構(例如ia32)
--tarball=$path 從本地壓縮包獲取標頭
--devdir=$path SDK下載目錄(預設是作業系統快取目錄)
--ensure 如果已經存在,不重灌標頭檔案
-dist-url=$url 從自定義網址下載標題壓縮包
--proxy=$url 設定HTTP(S)代理以下載標頭壓縮包
--noproxy=$urls 設定網址以在下載標頭壓縮包時忽略代理
--cafile=$cafile 覆蓋預設的CA鏈(下載壓縮包)
--nodedir=$path 設定節點原始碼的路徑
--python=$path 設定Python二進位制檔案的路徑
--msvs_version=$version 設定Visual Studio版本(僅Windows)
--solution=$solution

配置

環境變數

將格式npm_config_OPTION_NAME用於上面列出的任何命令選項(選項名稱中的短劃線應替換為下劃線)。

例如,例如,要將devdir設定為/tmp/.gyp,您將:
在Unix上執行:

export npm_config_devdir=/tmp/.gyp

或者在Windows上執行:

set npm_config_devdir=c:\temp\.gyp

npm配置

將格式OPTION_NAME用於上面列出的任何命令選項。

例如,要將devdir設定為/tmp/.gyp,可以執行:

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

:通過npm設定的配置僅在當node-gyp通過npm執行時使用,不是直接執行node-gyp

證書

node-gyp在MIT證書下可用。詳情見證書檔案