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

Если вы хотите первым делом взглянуть на код, вы можете найти его на GitHub здесь.

красивее

На наш взгляд, это необходимо для современного проекта. Единственная нестандартная опция, которую мы используем, — это "trailingComma": "all", что делает проверки более минимальными.

Настройте Prettier для запуска при фиксации (см. проект для настройки Husky/lint-staged/prettier) и также при сохранении в редакторе, чтобы cmd+s (или ctrl+s) мгновенно форматировал ваш файл.

Базовая настройка линтинга

В настоящее время мы настоятельно предпочитаем TSLint ESLint из-за отсутствия ключевых возможностей в ESLint, особенно с промисами linting. (Обратите внимание, что Typescript планирует поддерживать ESLint в будущем, и эти рекомендации в какой-то момент изменятся.)

Мы используем различную конфигурацию linting для разработки и фиксации. Это потому, что в редакторе раздражают некоторые правила — неиспользуемые переменные и упорядоченный импорт. Нам не нужны волнистые линии, и мы хотим выполнять итерации быстро, но мы действительно хотим, чтобы эти проблемы обнаруживались при фиксации.

Примечания к конкретным правилам

  • Если у вас проект React, добавьте линтинг хуков в tslint.json.
  • tslint-etc необходим для удаления неиспользуемого импорта. Фиксатор TSLint устарел, а флаг noUnusedLocals в tsc не имеет фиксатора.
  • await-promise и no-floating-promise устраняют множество ошибок, связанных с отсутствием оператора await или ошибочным мнением о том, что функция является асинхронной. Объявление списка объектов, подобных обещаниям, обеспечивает отличную совместимость с такими библиотеками, как knex, которые возвращают объекты, которые можно использовать.
  • no-unused-expression также устраняет целые классы ошибок, например. код типа if (isValid), где isValid на самом деле является функцией.
  • строгие-типовые-предикаты: неоценимы, устраняют некоторые ошибки типов (например, вы знаете, что тип может быть нулевым, но он случайно объявлен необнуляемым)
  • strict-boolean-expressions: настоятельно рекомендуется избавиться от двусмысленности строковых и числовых логических выражений. ignore-rhs позволяет выполнять быстрые проверки, такие как someBoolean && myFunc().

Спасибо за прочтение — надеюсь, это было полезно для вас, и мы будем рады узнать ваше мнение и узнать, есть ли другие правила, которые вы считаете обязательными!

Узнайте, как мы меняем подход к эффективному фитнесу, на 2minute.com.

Увлечены своим кодом и хотите присоединиться к гибкому удаленному стартапу? Мы всегда рассматриваем заявки — обращайтесь по адресу [email protected].