3

VS コードの拡張機能を開発しています (javascript を使用)。次に、VS Code がインストールされたパスが必要です。Windows には次の方法があります。

var child = require('child_process');
child.exec('reg query HKEY_CLASSES_ROOT\\*\\shell\\VSCode /v Icon', function (error, strOut, strError) { 
//some code...
})

ただし、ユーザーが VS Code を正しくインストールしている間のみ機能します。このフォルダーが他のマシンからコピーされた場合 (レジストリ内の VS Code とは関係ありません)、この関数は失敗します。

一方、Linux や OS X ではまったく動作しませんでした。

役立つAPIがあるかどうか(何も見つかりませんでした)、または他の方法でそのパスを取得できるかどうか疑問に思います。

4

4 に答える 4

9

VSCODEのディレクトリが必要な理由はわかりませんが、拡張機能があるディレクトリが必要でした。そして、次のようにアクセスできます。

var myExtDir = vscode.extensions.getExtension ("publisher.name").extensionPath;

発行元と名前が package.json にある場所

于 2016-08-27T02:43:28.233 に答える
4

VSCode は作成され、node.js を使用するため、コンピューター、ユーザー、およびノー​​ドの環境変数の両方にアクセスできます。

VSCode の使用済みインストール パスを取得するには、次を使用できます。

process.env.VSCODE_CWD

たとえば、私の拡張機能が最初に行ったことは次のとおりです。 console.log(process.env.VSCODE_CWD)デバッグコンソールに次のように表示されますC:\Program Files\Microsoft VS Code(これは、VSCodeをインストールした場所です)。

于 2018-02-17T19:46:56.250 に答える
0

他の人が同じものを探しに来た場合に備えて、あなたが見つけた答えを追加すると思いました.

path.dirname(require.main.filename);

Ubuntuで返されます(私にとって)

/usr/share/code/resources/app/out

Windows では、戻り値

c:\Program Files\Microsoft VS Code\resources\app\out

OSXにも適切なものを返す必要があります。

これは、bootstrap.js を含むフォルダーであり、アプリケーションがインストールされている場所 (このインスタンスの既定の場所) を決定するのに十分です。

私の場合、vscode の一部としてビルドされたノード モジュール (vscode-ripgrep) の 1 つへのパスが必要だったので、パスをもう少し処理する必要がありますが、それでうまくいきます。

于 2018-01-17T16:18:44.973 に答える