Переменные среды для реактивных мозгов IDE внешние инструменты
Я создал внешний инструмент webstorm, который выдает некоторые ошибки, но выполнение той же задачи из терминала работает нормально. Я понимаю, что это происходит потому, что при запуске в веб-шторме переменная $PATH задается иначе, чем в случае терминала. Нет никакой возможности установить переменную среды при создании внешнего инструмента. Как мне установить $PATH для внешних инструментов в webstorm/rubymine? Внешний инструмент, который я создавал, был непростой задачей, а ОС - Ubuntu, если это поможет.
Это ошибка: Ошибка запуска сервера grunt: Невозможно запустить программу "grunt": ошибка =2, Нет такого файла или каталога
4 ответа
Существует запрос на поддержку переменных среды для внешних инструментов.
Текущие обходные пути:
- Сделайте среду приложений GUI такой же, как в Terminal для этого ответа
- Запустите ваш скрипт через
bash --login
(внешний инструмент запускает оболочку bash login, которая устанавливает среду и выполняет имя сценария, переданное в качестве параметра)
Для OSX:
открыто ‘/Applications/Webstorm.app/Contents/Info.plist’
в вашем любимом редакторе.
Найдите следующий раздел и замените [Значение вашего пути]
<key>LSEnvironment</key>
<dict>
<key>PATH</key>
<string>[Your Path Value]</string>
</dict>
Затем запустите:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/WebStorm.app
Я получил это исправление из фантастической статьи Ifeanyi Isitor
http://ify.io/getting-webstorm-external-tools-to-work-on-webstorm-on-osx
Вот несколько обходных путей, которые я использую в Windows, пока эта функция не будет поддерживаться IntelliJ. Пожалуйста, пометьте запрос функции
перекрестная оболочка
В моих проектах у меня уже установлен cross-env , так что я могу легко повторно использовать его вExternal Tools
диалог, например
- Программа:
D:\dev\YOUR_PROJECT\node_modules\.bin\cross-env.cmd
- Аргументы:
MY_ENV_VAR=value MY_ENV_VAR2=1 D:\dev\SomeExe -exeOptions
Обходной путь сценария оболочки
примечание : при таком способе вывод цвета на консоль не работал (т.е. коды анси-цвета не интерпретируются)
Мой обходной путь - использоватьShell Script
запустить конфигурацию
- набор
Execute
в текст сценария и просто запустите исполняемый файл (с необязательными аргументами) - здесь мы также можем установить рабочий каталог и envvars
- примечание: мой терминал настроен на git-bash: поэтому я должен использовать
./
перед именем exe
Я нашел грязный обходной путь для Linux. Создайте файл (например, phpstorm_wrapper) и поместите его внутрь:
#!/bin/bash
if [ $# > 1 ]; then
exec "$@"
else
eval "$1"
fi
Сохраните и сделайте его исполняемым.
ИСПОЛЬЗОВАНИЕ:
Теперь вы можете запустить скрипт-обертку как Program:
в ваших "внешних инструментах" и установите все параметры, которые вам нравятся Arguments
поле ввода.
Скрипт выполнит его и вернет результат.
Если вам нужно использовать переменную ENV, вы должны использовать env
команда как это:
env FASTLANE_JSON_KEY_FILE=./release_manager.json fastlane test
Если вам нужно использовать | (трубы), phpstorm поместить его в кавычки. Чтобы иметь возможность выполнять команды, которые используют |, инкапсулируйте все текстовое поле "Аргументы" в external tool dialoge
в кавычках.
Пример: