node-gyp - Node.js 本地插件構建工具


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

node-gyp - Node.js 本地插件構建工具

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證書下可用。詳情見證書文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM