Launch.jsonのargs
とruntimeArgs
の違いは何ですか?
// Optional arguments passed to the runtime executable
"runtimeArgs": []
// Command line arguments passed to the program
"args": []
プログラムはランタイム実行可能ファイルと同じものではありませんか?
質問の背後にある追加情報と動機:
Nodejsアプリケーションを開発しています。私のpackage.json
には、start
スクリプトがあります。
"start": "electron ./src/Main/main.js arg2"
で、アプリコードでprocess.argv[2]
にアクセスすると、arg2
が取得されるため、npm start
を実行すると、アプリは意図したとおりに動作します。
VSCodeからアプリを実行すると、実行されません。その理由は、launch.json
に追加の引数を指定しなかったためです。それらの議論はどこに置くべきですか? process.argv
には、args
またはruntimeArgs
のいずれかで提供される引数が含まれているようですが、--debug-brk
引数にも固執しています。
コマンドライン(process.argv
)からアプリを実行するとき、またはVSCodeからアプリを起動するときに、npm start
を一貫して使用できるようにしたい。
これは主に ノードデバッグドキュメント で説明されていると思います:
Node.jsプログラムをノードで直接起動する代わりに、起動構成から直接「npm」スクリプトまたは他のタスクランナーツールを使用できます。
- PATHで利用可能な任意のプログラム(たとえば、「npm」、「mocha」、「gulp」など)をruntimeExecutable属性に使用できます[...]
runtimeExecutable
はデバッグしたいプログラムではありませんが、それを実行するために使用された実行可能ファイルです。したがって、runtimeArgs
はruntimeExecutable
に対して、args
はprogram
に対してです。
それがどのように詳細に機能するかに興味がある場合は、 ここにdebugAdapter.ts
実装の関連部分。
次の例を検討してください。
{
"name": "vscode-jest-tests",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/node_modules/jest-cli/bin/jest.js",
"stopOnEntry": false,
"args": [
"--runInBand"
],
"cwd": "${workspaceFolder}",
"preLaunchTask": null,
"runtimeExecutable": null,
"runtimeArgs": [
"--nolazy"
],
"env": {
"NODE_ENV": "development"
},
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"disableOptimisticBPs": true
}
=> set "NODE_ENV = development" && "C:\ Program Files\nodejs\node.exe" --nolazy --inspect-brk = 35238 node_modules\jest-cli\bin\jest.js --runInBand
runtimeArg "--nolazy"が発生しますbehind node.exe(typeに対応)および
arg "--runInBand"が発生しますbehind jest.js(programに対応)
属性「program」を削除すると、引数が次々に付加され、違いは見られません。