Переменные среды для реактивных мозгов 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 в кавычках.

Пример:

Другие вопросы по тегам