post title image
👨‍🏭

Работа на языке JavaScript в Visual Studio Code

devJSVS Code

At the very beginning

Мы возьмем VS Code как редактор для разработки на JavaScript (в частности React и ReactNative, так как платформа выглядит мощной и популярной). Вообще если отвлечься от конкретного языка VS Code это качественный текстовый редактор с огромными возможностями и потенциалом к расширению. Существует множество различных инструментов и плагинов, призванных помочь нам в работе. Попробуем их обуздать.

Редактор бесплатный, его можно скачать с официального сайта, там же можно найти документацию, FAQ, расширения и многое другое. Сообщество пользователей очень велико. Редактор является программным обеспечением с открытым исходным кодом и большинство расширений к нему — тоже. Это значит, что теоретически любой разработчик может принять участие в разработке самого инструмента.

Сам редактор приятен в пользовании как визуально, так и в плане удобства.

Create New

Следите за руками. Открываем VS Code, сочетание клавиш Ctrl+N создает новый файл (пока просто текстовый) хорошо, жамкаем Ctrl+K,M (такое сочетание означает, что надо сначала зажать вместе клавиши Ctrl и K, а затем отпустить их и нажать клавишу M), и выбираем язык на котором будем писать, редактор соответственно постарается помочь нам подсветкой и чем еще сможет. Начинаем набирать func, срабатывает автодополнение (это часть технологии IntelliSense) до function (применяется через Tab или Enter). Автодополнение позволяет значительно меньше набирать и снижает количество ошибок.

ES Lint

Пока все идет хорошо. Но, JS знаменит тем, что на нем можно в редакторе творить жуткое, а ошибки ловить только при запуске и потом долго и с наслаждением их искать (привет динамическая типизация). Есть плагин ESLint, который по сути просто использует одноименный инструмент. Linting - это проверка соблюдения стандарта оформления кода. ES - это язык ECMA Script стандартизированный международной организацией ECMA в спецификации ECMA-262, расширением которого и является JS. По сути плагин проверяет, что написанное нами соответствует стандарту языка, но мы можем настраивать эту проверку.

Это первый плагин, который мы поставим. Есть 2 способа сделать это. Во-первых, есть онлайн магазин расширений для VSCode, воспользовавшись поиском можно найти любой требуемый плагин и нажать кнопочку install. Но зачем куда-то ходить, marketplace есть прямо в редакторе!

Если нажать сочетание клавиш Ctrl+Shift+X или кнопку extensions icon на панели слева, откроется панель поиска расширений. Можно ввести в строке поиска 'ESLint', нажать на иконку плагина в списке результатов и тогда откроется домашняя страничка этого плагина с исчерпывающей информацией о нем. Здесь, для установки также следует нажать кнопочку install.

Плагин есть, но нет той библиотеки, которую он использует. Тут нам надо познакомиться с еще одним источником инструментов для разработки на JS. Наверно, тут не место отвлекаться на тему, что такое сторонний код, библиотеки и пакетные менеджеры. В сообществе JS, если вы хотите использовать кем-то написанный код (а на JS вам буквально придется это делать), вы можете использовать npm. [Тут]({% post_url 2020-05-06-windows-installing-node %}) отдельная статья как эту штуку установить.

Теперь когда у нас есть npm можем ставить пакеты!

npm install -g eslint

Опция -g говорит пакетному менеджеру поставить пакет не в какой-то конкретный проект, а глобально.

А это плагины, которые конфигурируют eslint. Без них (по умолчанию) eslint ничего не проверяет. (будем следовать Airbnb code style)

npm install -g eslint-config-airbnb-base eslint-plugin-import eslint-plugin-react

Это конфиг который должен лежать в папке нашего проекта .eslintrc.json:

{
  "env": {
    "browser": true,
    "es6": true
  },
  "extends": "airbnb-base", //используем правила airbnb
  "globals": {
    "Atomics": "readonly",
    "SharedArrayBuffer": "readonly"
  },
  "parserOptions": {
    "ecmaFeatures": {
      "jsx": true //это вместе с React идет
    },
    "ecmaVersion": 2018,
    "sourceType": "module"
  },
  "plugins": [
    "react" //опционально
  ],
  "rules": {
    //но немного расширяем их под свой вкус
    "linebreak-style": 0, //поскольку мы на Win работаем
    "no-plusplus": "off", //хочется мочь писать "i++"
    "indent": ["error", 4], //отступы у меня в 4 пробела
    "object-curly-spacing": ["error", "always", { "objectsInObjects": false }]
    // позволяет писать { value: { value: 1}}
  }
}

В принципе его можно создать при помощи мастера настройки по команде

eslint --init

Можно вообще положить конфиг в папку %UserName% и VSCode будет читать оттуда. Подробное описание конфигурации и всех правил можно найти на официальном сайте

Prettier

Еще очень хочется не парится насчет пробелов, табов, переносов, скобок и такого прочего, писать себе подряд и, если что-то пошло вразнобой, автоматом поправить с помощью какого-то инструмента. В принципе, ES Lint частично уже делает это за нас, но с Prettier как-то побаче.

Ставим одноименный плагин, в настройках выставляем галку prettier.eslintIntegration, чтобы линтер с форматером не воевали, чей стиль лучше. Если редактор вдруг не спросит какой форматер использовать по умолчанию для JS, указываем

"[javascript]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
    }

С этого момента можно считать, что мы прикрутили боковые колеса, которые заботливо не будут давать нам упасть.

Personal Access Token

Буду исходить из предположения, что аккаунт на GitHub у Вас есть. Теперь нужно завести токен. Идем в Settings → Developer Settings → Personal Access Tokens. Обзываем понятным образом и обязательно ставим галочку gist.

token-settings

Нажимаем Generate и далее обязательно копируем его куда-нибудь, больше нам этот токен не покажут.

token

Settings Sync Extension

Ставим одноименное расширение для VS Code. Время залить свои первые настройки! Ctrl+Shift+P Вызывает командную консоль, в ней можем набрать >Sync и выбрать команду Upload (либо Shift + Alt + U прямо из редактора). При первом вызове расширение попросит ввести token, который мы заботливо сохранили на предыдущем шаге. А при успешной загрузке настроек вернет GistID, который тоже надо сохранить, чтобы иметь возможность скачать эти настройки на другой машине.

Если ввести ссылку вида https://gist.github.com/{your_userName}/{gist_id} можно посмотреть те самые настройки (или просто зайти на Gist будучи залогиненым на GitHub)

Можно поставить расширение Gist для VS Code и прямо из редактора загружать или скачивать различные файлы. В том числе можно сохранить свой файл .eslintrc.

Опциональные расширения

Auto Close Tag - автоматически добавляет закрывающий тэг
Auto Rename Tag - автоматически переименовывает парный тэг
Color highlight - подсветка шестнадцатеричных кодов цветов
Codestream - интересное расширение для совместной работы над кодом
GitLens - git аннотации
ToDo Tree - подсветка и навигация по меткам ToDo

А вообще вот поиск

vs-code-extensions-search

ни в чем себе не отказывайте)