Автор оригинала: 🇺🇸🇫🇷 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 Устанавливаются по всему миру, каждая разработчик в команде будет вынуждена листать. здесь …