node-gyp -node.jsネイティブアドオンビルドツール
node-gypは、node.jsにnode.jsで記述されたクロスプラットフォームコマンドラインツールで、node.jsのネイティブアドオンモジュールをコンパイルするために以前はChyP-Nextプロジェクトのベンダー付きコピーが含まれており、以前はChromiumチームが使用し、Node.jsネイティブアドオンの開発をサポートするために拡張しました。
node-gyp node.js自体の構築に使用されていないことに注意してください。
Node.jsのすべての電流およびLTSターゲットバージョンがサポートされています。 node.jsのバージョンは、システムnode-gypのダウンロードに実際にインストールされているバージョンに応じて、ターゲットバージョンに必要な開発ファイルまたはヘッダーがダウンロードされます。 Stable node.jsバージョンのリストは、node.js Webサイトにあります。
重要
python> = v3.12にはnode-gyp > = v10が必要です
npm使用してnode-gypインストールできます。
npm install -g node-gypオペレーティングシステムによっては、インストールする必要があります。
makeclang 、 clang++ 、およびmakeインストールするXcode Command Line Tools 。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ストアからPythonの現在のバージョンをインストールします。
Visual C ++ビルド環境をインストールする:Visual Studio 2019以降には、Visual StudioコミュニティのDesktop development with C++使用します。 Visual Studio 2019よりも古いバージョンの場合は、 Visual C++ build toolsを使用してVisual Studioビルドツールをインストールします。
上記の手順が機能しなかった場合は、追加のヒントについては、WindowsのMicrosoftのnode.jsガイドラインにアクセスしてください。
ARMのWindows上のネイティブARM64 node.jsをターゲットにするには、コンポーネント「ARM64用のVisual C ++コンパイラとライブラリ」および「ARM64用のVisual C ++ ATL」を追加します。
ARMのWindowsでネイティブARM64 C ++コンパイラを使用するには、Visual Studio 2022 17.4以降がインストールされていることを確認してください。
次のPowerShellモジュール:vssetup Install-Module VSSetup -Scope CurrentUserを使用してインストールすることをお勧めします。これにより、Visual Studio Detection Logicがより柔軟でアクセスしやすい方法を使用して、PowerShellのConstrainedLanguageモードを避けます。
node-gyp Pythonのサポートバージョンをインストールする必要があります。 Pythonの複数のバージョンがインストールされている場合は、次の方法のいずれかで使用するバージョンnode-gypを特定できます。
--pythonコマンドラインオプションを設定することにより、例: node-gyp < command > --python /path/to/executable/pythonnode-gypがnpmで呼び出され、 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のランタイムのモジュールを構築する場合、 --dist-urlまたは--nodedirフラグを使用して、ランタイムのヘッダーを指定する必要があります。 。
また、 --dist-urlまたは--nodedirフラグが渡されると、node-gypはconfig.gypi使用してヘッダー配信に出荷され、ビルド構成を生成します。これは、 process.configを使用するデフォルトモードとは異なります。実行中のnode.jsインスタンス。
ヘッダー分布の電子出荷された不正なconfig.gypiの古いバージョンのいくつかは、構成エラーを回避するために、node- --force-process-configに渡す必要があるかもしれません。
ネイティブアドオンをコンパイルするには、最初にそのルートディレクトリに移動します。
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/ディレクトリにMakefile (UNIXプラットフォーム上)またはvcxprojファイル(Windows上)のいずれかがあります。次に、 buildコマンドを呼び出します。
node-gyp buildこれで、コンパイルされた.node bindingsファイルがあります!コンパイルされたバインディングは、ビルドモードに応じて、 build/Debug/またはbuild/Release/になります。この時点で、node.jsを使用した.nodeファイルを要求し、テストを実行できます!
注: Bindingsファイルのデバッグビルドを作成するには、 configure 、 build 、またはrebuildいずれかを実行するときに、 --debug (または-d )スイッチを渡します。
binding.gypファイルbinding.gypファイルは、JSONのような形式でモジュールを構築する構成を記述します。このファイルは、 package.jsonと一緒に、パッケージのルートに配置されます。
node.jsアドオンを構築するのに適したベアボーンgypファイルは次のようになります。
{
"targets" : [
{
"target_name" : "binding" ,
"sources" : [ "src/binding.cc" ]
}
]
}Docsディレクトリには、特定のNode-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 | (デフォルトはprocess.version)for(default is process.version )を作成するnode.jsバージョン |
--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からヘッダータルボールをダウンロードします |
--proxy=$url | ヘッダータルボールをダウンロードするためにHTTP(s)プロキシを設定します |
--noproxy=$urls | ヘッダータルボールをダウンロードするときに、プロキシを無視するようにURLを設定します |
--cafile=$cafile | デフォルトのCAチェーンをオーバーライドする(タルボールをダウンロードする) |
--nodedir=$path | ノードソースコードへのパスを設定します |
--python=$path | Pythonバイナリへのパスを設定します |
--msvs_version=$version | ビジュアルスタジオバージョン(Windowsのみ)を設定する |
--solution=$solution | ビジュアルスタジオソリューションバージョン(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がnpmを介して実行される場合にのみ使用されます。Node node-gypが直接実行される場合ではありません。
node-gyp MITライセンスの下で利用できます。詳細については、ライセンスファイルを参照してください。