node-gyp -Node.js本機插件構建工具
node-gyp是用node.js編寫的跨平台命令行工具,用於編譯Node.js的本機插件模塊。它包含了GYP-NEXT項目的供應商副本,該副本以前曾由Chromium Team使用並擴展以支持Node.js本機插件的開發。
請注意, node-gyp不用於構建node.js本身。
支持Node.js的所有當前和LTS目標版本。根據系統node-gyp上實際安裝了哪個版本的Node.js,下載了目標版本的必要開發文件或標題。穩定node.js版本的列表可以在Node.js網站上找到。
重要的
python> = v3.12需要node-gyp > = v10
您可以使用npm安裝node-gyp :
npm install -g node-gyp根據操作系統,您需要安裝:
makeXcode Command Line Tools將安裝clang , clang++和make 。xcode-select --install安裝Xcode Command Line Tools獨立安裝。 - 或者 - Xcode -> Open Developer Tool -> More Developer Tools...下安裝命令行工具。安裝帶有巧克力的工具:
choco install python visualstudio2022-workload-vctools -y或手動安裝和配置Python和Visual Studio工具:
從Microsoft Store安裝當前版本的Python。
安裝Visual C ++構建環境:對於Visual Studio 2019或更高版本,請使用Visual Studio社區的Desktop development with C++ 。對於比Visual Studio 2019年齡較大的版本,請使用Visual C++ build tools選項安裝Visual Studio構建工具。
如果以上步驟不適合您,請訪問Microsoft的Node.js Windows指南以獲取其他提示。
要靶向ARM上窗戶上的本地ARM64 Node.js,請添加組件“ ARM64的Visual C ++編譯器和庫”和“ ARM64的Visual C ++ ATL”。
要在手臂上的Windows上使用本機ARM64 C ++編譯器,請確保您安裝了Visual Studio 2022 17.4或更高版本。
建議使用Install-Module VSSetup -Scope CurrentUser安裝以下powerShell模塊:vSetup。這將使Visual Studio檢測邏輯使用更靈活和可訪問的方法,從而避免PowerShell的ConstrainedLanguage模式。
node-gyp要求您安裝了Python支持的版本。如果已安裝了多個版本的Python,則可以識別以下方式應使用的版本node-gyp :
--python命令行選項,例如: node-gyp < command > --python /path/to/executable/pythonnpm調用node-gyp ,並且已安裝了多個版本的Python,則可以將npm_config_python環境變量設置為適當的路徑: export npm_config_python=/path/to/executable/python或在Windows上:
py --list-paths # To see the installed Python versions
set npm_config_python=C:pathtopython.exe # CMD
$Env:npm_config_python="C:pathtopython.exe" # PowerShell如果將PYTHON環境變量設置為Python可執行文件的路徑,則如果它是受支持的版本,則將使用該版本。
如果NODE_GYP_FORCE_PYTHON環境變量設置為Python可執行文件的路徑,則將使用它代替其他配置或內置的Python搜索路徑。如果它不是兼容版本,則不會進行進一步的搜索。
當構建與官方node.js發行版具有不同構建配置的第三方node.js runtimes等第三方節點的模塊時,您應該使用--dist-url或--nodedir標誌來指定運行時的標頭以構建用於構建的標題。 。
同樣,當傳遞--dist-url或--nodedir標誌時,Node-GYP將使用config.gypi在標題分佈中運送的gypi生成構建配置,這與使用process.config對象的默認模式不同運行node.js實例。
電子的一些舊版本在其標題分佈中發貨的畸形config.gypi ,您可能需要通過--force-process-config來節點GYP,以解決配置錯誤。
要編譯本機插件首先轉到其根目錄:
cd my_node_addon下一步是為當前平台生成適當的項目構建文件。為此使用configure :
node-gyp configure Visual C ++構建工具2015的自動檢測失敗,因此--msvs_version=2015需要添加(如上所述,NPM運行時不需要):
node-gyp configure --msvs_version=2015注意: configure步驟在當前目錄中查找binding.gyp文件以進行處理。有關創建binding.gyp文件的說明,請參見下文。
現在,您將在build/ Directory中擁有一個Makefile (在UNIX平台上)或vcxproj文件(在Windows上)。接下來,調用build命令:
node-gyp build現在,您已編譯了.node Bindings文件!根據構建模式,編譯的綁定最終以build/Debug/或build/Release/ 。此時,您可以使用Node.js的.node文件並運行測試!
注意:要創建綁定文件的調試構建,請在運行configure , build或rebuild命令時傳遞--debug (或-d )開關。
binding.gyp文件binding.gyp文件描述了以類似JSON格式構建模塊的配置。該文件與package.json一起放在軟件包的根部。
適用於構建節點的Barenropons gyp文件可能看起來像:
{
"targets" : [
{
"target_name" : "binding" ,
"sources" : [ "src/binding.cc" ]
}
]
}DOCS目錄包含有關特定節點GYP主題的其他文檔,如果您使用Node-GYP遇到問題或構建附加子,可能會很有用。
Node.js本機插件和編寫gyp配置文件的一些其他資源:
node-gyp響應以下命令:
| 命令 | 描述 |
|---|---|
help | 顯示幫助對話 |
build | 調用make / msbuild.exe並構建本機插件 |
clean | 如果存在,則刪除build目錄 |
configure | 為當前平台生成項目構建文件 |
rebuild | 連續運行clean , configure和build全部 |
install | 為給定版本安裝node.js頭文件 |
list | 列出當前安裝的Node.js標題版本 |
remove | 刪除給定版本的node.js標頭文件 |
node-gyp接受以下命令選項:
| 命令 | 描述 |
|---|---|
-jn , --jobs n | make運行。值max將使用所有可用的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 (例如gmake ) |
--thin=yes | 啟用薄靜態庫 |
--arch=$arch | 設置目標體系結構(例如IA32) |
--tarball=$path | 從當地的油粉球獲取標題 |
--devdir=$path | SDK下載目錄(默認為OS Cache目錄) |
--ensure | 如果已經存在,請不要重新安裝標題 |
--dist-url=$url | 從自定義URL下載標題TARBALL |
--proxy=$url | 設置HTTP(S)代理以下載標頭TARBALL |
--noproxy=$urls | 下載標頭tarball時,設置了忽略代理的URL |
--cafile=$cafile | 覆蓋默認的CA鏈(下載Tarball) |
--nodedir=$path | 將路徑設置為節點源代碼 |
--python=$path | 設定了Python二進制的路徑 |
--msvs_version=$version | 設置Visual Studio版本(僅Windows) |
--solution=$solution | 設置Visual Studio解決方案版本(僅Windows) |
--force-process-config | 強制使用Runtime的process.config對像生成config.gypi文件 |
使用上述任何命令選項的npm_config_OPTION_NAME表格(選項名稱中的破折號應由下劃線替換)。
例如,要將devdir設置為等於/tmp/.gyp ,您將:
在Unix上運行此功能:
export npm_config_devdir=/tmp/.gyp或在Windows上的此:
set npm_config_devdir=c:temp.gypnpm配置使用上面列出的任何命令選項的表單OPTION_NAME 。
例如,要將devdir設置為等於/tmp/.gyp ,您將運行:
npm config set [--global] devdir /tmp/.gyp注意:僅當通過npm運行節點node-gyp ,而不是直接運行node-gyp時,才會使用npm的配置集。
node-gyp可根據MIT許可獲得。有關詳細信息,請參見許可證文件。