Рубрики
Без рубрики

РЕАГИМАЯ РЕАГИМАЦИЯ И КРИГАЦИИ С VIM, ALE, XO и REETTER

Узнайте, как lint и исправьте свой React Code в Vim с использованием ALE, XO и Cretier

Автор оригинала: 🇺🇸🇫🇷 Peter Yordi 🚀.

TL; DR Подберите настройку VIM здесь и package.json здесь

Отвиновение. Ах … да … что вам нужно добавить в проект, что вы просто не хотите добавлять. Но в вашей голове есть этот маленький голос, рассказывая вам, что … только потому, что. Это как тестирование. Я всегда расслабился, чтобы добавить тесты, либо отвлекать, потому что они чувствовали себя как много бесполезной работы.

Вещи изменились, когда, некоторое время назад я кодировал в Python. Есть плагины, такие как Black и Isort, которые делают много полезных процедур очистки кода. Например, Исторт Сортирует импорт в умный путь. Черный Форматы кода для меня, чтобы я больше не волнулся, если эта питонская линия имеет неправильные отступы. Это напоминает мне об этой цитате:

«Пробуждение в другом человеке, нетерпеливый хочет». — Дейл Карнеги

Другими словами, я не начал использовать линтам, потому что это лучшая практика. Вместо этого я использовал лговик, потому что это сделало мою жизнь как программист проще. Другими словами, Linters решили серьезную болевую точку.

Вернуться к реакции. У меня уже есть Эль Установлен в Vim, и он работал чудеса с обоими черный и Исторт Отказ Однако он сделал ужасную работу с JavaScript. Это всегда думало, что все мои файлы были сломаны. Это было потому, что Прекраснее хотел отформатировать вещи таким образом, чтобы XO не понял. Я установил оба, но не успел заставить их говорить друг с другом! Это заставило меня перезагрузить мой Vimrc Каждый раз, когда я открыл новый файл, чтобы отключить Ужасный UX! Итак, сегодня я решил вложить время, чтобы решить эту проблему раз и для всех.

Package.json Правила

Package.json Правила, правило! Раньше было то, что нам нужно было добавить .eslintrc и .babelrc и webpack.config.js .nodemonignore в корне каждого проекта. Как … на самом деле. Это была одна из причин, по которым я проигнорировал увлечение: это было как много работы, чтобы сохранить. Или я просто нашел ленивые оправдания? Но я знаю, что некоторые из вас там используют это оправдание. C’mmonnn не скрывается

Давайте двигаться дальше.

Видимо, Package.json Может содержать правила, которые в противном случае перешли в эти файлы. Просто посмотри на эту красоту:

// package.json
{
  "name": "package-name"
  "devDependencies":{
     ...
  }
  "nodemonConfig": {
     ...
  },
  "babel": {
     ...
  },
  "xo": {
    "prettier": true,
     ...
  },
  "husky": {
     ...
  }
}

Фантастический!

Vim Config

У нас есть конфигурация в Package.json , но как мы делаем Vim понимать это? Другими словами, как будет Эль Прочитайте этот конфиг?

Первые вещи в первую очередь. ALE предоставляет интерфейс для обоих ЛИНТЕРЫ и а Фиксаторы Отказ

let b:ale_fixers = {'python': ['black', 'isort'], 'javascript': ['xo']}
let b:ale_linters = {'python': ['pyflakes'], 'javascript': ['xo']}

Здесь я говорю Эле, чтобы исправить JS с XO и питон с черный и Исторт Отказ Тогда я говорю об этом к лицу Python с Pyflakes и JavaScript с XO Отказ Но, если я переключил фиксатор JS на Прекраснее Вещи больше не работают правильно, потому что XO не совсем как то, что делает красивее. Я мог бы добавить XO Настройки внутри .vimrc :

let g:ale_javascript_xo_options = "--plug=react --prettier"

Но это плохое представление, потому что не все используют Vim! Теперь получается, XO можно сказать, чтобы использовать красивее в качестве фиксатора, и это может быть сделано внутри Package.json :

// package.json
{
  "xo": {
    "prettier": true,
  }
}

Но этого недостаточно. XO Использует ESLINT под капотом, и ESLINT не понимает реагирования по умолчанию. Он бросит ошибки в иначе правильные заявления JSX:

import Header from './Header' // no-unused-vars

По этой причине нам нужно обновить XO Конфигурация и добавить несколько зависимостей Dev.

"devDependencies": {
+    "eslint-config-xo": "^0.26.0",
+    "eslint-config-xo-react": "^0.19.0",
},
"xo": {
  "prettier": true,
+   "extends": "xo-react",
}

Делая это, Vim наконец-то исправит JS с Прекраснее и пересекает это с XO Отказ Но правила не достаточно достаточно.

Но правила по умолчанию не всегда совпадают на мой вкус. Например, я не согласился с тем, как мне хотелось использовать корпус Kebab для моих имен файлов. К счастью, это было легко отключить:

"xo": {
  "prettier": true,
  "extends": "xo-react",
+   "rules": {
+     "unicorn/filename-case": 0,
+   }
}

И да, это точный синтаксис, используемый для Eslint, и это без необходимости специального раздела Eslint или .eslintrc Отказ Сладкий!

Обеспечение льмина

Хорошо, поэтому у меня возьмены на месте, но у меня была догадка, что, если я не принудил это, я мог бы расслабиться. Итак, я вспомнил, что некоторые люди принудительно принудительно подцизируют предшественницу Git. Я оглянулся и наткнулся на хаски Что делает только что и угадать что? Он может быть настроен внутри Package.json ! 🙈. 🙈.

Вот как выглядят все:

// package.json
{
  "scripts":{
+    "test": "xo --fix"
  },
+ "husky": {
+   "hooks": {
+     "pre-commit": "npm test"
+   }
+ }
}

Таким образом, прежде чем каждый коммит, NPM Test Запускается, и на данный момент этот скрипт будет работать xo. Я не против принуждения льмина перед каждым коммитным (точением того, что коммит не разрешается произойти, если откажется от переживания). Тем не менее, это может быть применено только до фиксации. В этом случае замените скрипт на:

// package.json
{
  "husky": {
    "hooks": {
-   "pre-commit": "npm test"
+   "pre-push": "npm test"
    }
  }
}

И вуаля! Теперь, независимо от того, что у вас есть, до тех пор, пока Прекраснее и XO Устанавливаются по всему миру, каждая разработчик в команде будет вынуждена листать. здесь …