ここらへんになるとnode.jsとかelectronの範疇になるんですね。 一生懸命VS Codeの拡張機能のAPIリファレンス眺めてて悩んでました。
ということでprocess.env
から取得できます。先日作ったjava -version
を出力ウィンドウに出力するプログラムをJAVA_HOME
環境変数からフルパス指定で実行する方法は以下のような感じになります。
'use strict'; import * as vscode from 'vscode'; import * as child_process from 'child_process'; import * as path from 'path'; exportfunction activate(context: vscode.ExtensionContext) {var outputChannel = vscode.window.createOutputChannel("java"); // ここ!var javaHome = process.env['JAVA_HOME']; var javaCommand = '"' + path.join(javaHome, "bin", 'java.exe') + '"'; let disposable = vscode.commands.registerCommand('extension.sayHello', () => { child_process.exec(javaCommand + " -version", (error, stdout, stderror) => { outputChannel.appendLine(stdout); outputChannel.appendLine(stderror); }); }); context.subscriptions.push(disposable); }exportfunction deactivate() {}
パスの結合はimport * as path from "path";
で読み込んだpathのjoinがいい具合にやってくれるので楽ちんです。