Как расширение для VS-кода получает путь установки VS-кода?

62
2

Я разрабатываю расширение для VS-кода (используя javascript). Теперь мне нужен путь, где установлен код VS. Для окон есть способ:

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

Но он работает, пока пользователь правильно установил код VS. Если эта папка была скопирована с другого компьютера (это не означает ничего в коде VS в реестре), эта функция завершится с ошибкой.

С другой стороны, он не может работать вообще на Linux или OS X.

Интересно, есть ли API, которые могут быть полезны (я ничего не нашел), или другие способы могут получить этот путь.

спросил(а) 2021-01-25T18:05:26+03:00 5 месяцев назад
1
Решение
77

Я не знаю, зачем вам нужен каталог VSCODE, но мне нужен каталог, где мое расширение. И его можно получить следующим образом:

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

Где издатель и имя находятся в package.json

ответил(а) 2021-01-25T18:05:26+03:00 5 месяцев назад
45

Я думал, что добавлю ответ, который вы нашли, если другие придут искать то же самое.

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-ripgrep), который построен как часть vscode, поэтому мне нужно обработать путь немного больше, но он выполняет эту работу.

ответил(а) 2021-01-25T18:05:26+03:00 5 месяцев назад
45

VSCode записывается и использует node.js, поэтому вы можете получить доступ к переменным среды компьютера, пользователя и узла.

Чтобы получить использованный путь установки VSCode, вы можете использовать следующее:

process.env.VSCODE_CWD

Например, если первое, что я сделал, это было; console.log(process.env.VSCODE_CWD) выведет на консоль отладки следующее C:\Program Files\Microsoft VS Code (здесь я установил VSCode).

ответил(а) 2021-01-25T18:05:26+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема