Обновление, 10.9.2018: Эта статья перенесена в недавно рекомендованный плагин VSCode Джаредом Форсайтом.

Версия моего набора инструментов на этот день:

  • Причина 3.3.3 @ e10fa53
  • BuckleScript 4.0.5

Примечание. Эта статья предназначена для новичков, не знакомых с Reason.

В апреле 2018 года мы с Ником Графом проводили семинары в React-Finland и получили действительно хорошие впечатления о том, как новички впервые учатся программировать на Reason.

Инструменты экосистемы Reason весьма полезны для изучения самого языка, поэтому я пытаюсь показать вам, как я работаю над кодом Reason внутри VSCode и терминала, чтобы вам было легче начать работу.

К счастью, с августа 2018 года шаги по установке стали намного проще с новым плагином VSCode, созданным Джаредом Форсайтом.

В чем основное отличие от существующего плагина ocaml / reason? О мотивации можно прочитать здесь.

Это также единственный плагин, который работает в Windows без каких-либо взломов, поэтому делает его официальным рекомендуемым способом разработки Reason.

Шаг 1. Установка подключаемого модуля VSCode Reason

Перейдите на вкладку расширения и найдите на торговой площадке плагин под названием reason-vscode от Джареда Форсайта, нажмите кнопку установки и перезагрузите свой экземпляр VSCode.

Теперь ваш редактор должен иметь возможность взаимодействовать с кодом Reason. После первоначальной сборки с помощью BuckleScript вы должны увидеть информацию о типе при наведении курсора, предполагаемых типах, а также об ошибках основных типов. Также вы заметите, что *.re будет иметь правильную подсветку синтаксиса.

Шаг 2. Давайте опробуем настройку

Что касается следующих шагов, давайте рассмотрим проект на основе Reason / BuckleScript. Для удобства мы будем использовать тот же репозиторий, который я использую для своих семинаров:



Клонируйте репозиторий и запустите npm install, чтобы установить все необходимые зависимости. Поскольку bs-platform определяется как devDependency, все инструменты, необходимые для компиляции Reason в JavaScript, также будут установлены в вашем каталоге node_modules.

Мы уже определили некоторые вспомогательные скрипты внутри package.json, чтобы легко взаимодействовать с компилятором BuckleScript:

"scripts": {
  "bs:clean": "bsb -clean-world",
  "bs:build": "bsb -make-world",
  "bs:watch": "bsb -make-world -w"
}

Таким образом, запустив npm run bs:watch, вы запустите компилятор BuckleScript в режиме наблюдения, активно перекомпилируя файлы Reason (*.re) при каждом изменении. Поскольку BuckleScript также предлагает более качественные сообщения об ошибках, чем Merlin, давайте воспользуемся командой watch внутри самого терминала VSCode:

На скриншоте выше вы увидите, что BuckleScript запущен на нижней панели терминала. Всякий раз, когда в нашем коде возникает ошибка типа (после сохранения файла), компилятор будет показывать приятные сообщения об ошибках для устранения неполадок:

Для меня гораздо проще запустить BuckleScript внутри моего VSCode, поскольку мне никогда не придется переключаться с моей IDE на мой терминал. Как только я адаптировал этот рабочий процесс, я понял, что цикл обратной связи стал намного быстрее, и я получил гораздо более захватывающий опыт программирования.

Конечно, есть много других инструментов, которые нужно запускать в фоновом режиме, например webpack или сервер разработки. Обычно я храню их в своем отдельном терминале, потому что в большинстве случаев ошибки возникают только тогда, когда BuckleScript не компилируется полностью.

Последний совет: переформатирование

Каждый раз, когда вы редактируете *.re файл, вы можете запустить Shift-Option-F, чтобы переформатировать буфер редактора.

Чтобы попробовать это, скопируйте этот фрагмент кода в один из файлов причин в каталогеsrc и нажмите горячую клавишу Shift-Option-F:

let addAndStringify = (
  a,
  b) => {
let c = a + b;
string_of_int(c);
};

Теперь код должен быть отформатирован правильно.

Вот и все! После выполнения этих двух шагов вы теперь можете работать с кодом Reason в VSCode.

Если у вас возникли проблемы с настройкой, не забудьте задать вопросы на нашем канале Reason Discord #editorsupport.

Для получения дополнительных статей в блогах и новостей о Reason и других языках программирования, связанных с Интернетом, подписывайтесь на меня в Twitter.