Linting и форматирование кода — это неотъемлемая часть рабочего процесса в любом проекте, особенно в тех, которые требуют высокого качества и удобства в поддержке кода. В фреймворке Stencil, как и в других современных JavaScript-инструментах, настройка линтинга и форматирования помогает обеспечить единообразие, облегчает сотрудничество и снижает количество ошибок. Правильная настройка инструментов для линтинга и форматирования способствует созданию чистого, легко читаемого и поддерживаемого кода.
Stencil изначально использует TSLint для проверки TypeScript-кода. Однако с появлением ESLint, который стал стандартом для JavaScript и TypeScript проектов, рекомендуется заменить TSLint на ESLint. ESLint имеет более широкую поддержку и позволяет гибко настраивать правила линтинга, а также интегрируется с множеством плагинов и настроек, что делает его идеальным выбором для проекта на Stencil.
Для того чтобы использовать ESLint в проекте Stencil, необходимо установить соответствующие зависимости:
npm install --save-dev eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin
После установки ESLint и необходимых плагинов нужно создать
конфигурационный файл .eslintrc.json, который будет
содержать настройки линтера. Стандартная конфигурация для
Stencil-проекта может выглядеть следующим образом:
{
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2020,
"sourceType": "module"
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
],
"plugins": [
"@typescript-eslint"
],
"rules": {
"no-console": "warn",
"semi": ["error", "always"],
"quotes": ["error", "single"]
}
}
Эта настройка включает основные правила для TypeScript-кода. Она
включает рекомендации по использованию точек с запятой, кавычек, а также
генерирует предупреждения для использования console.log в
продакшн-версии.
Приведение кода к единому стилю значительно улучшает его восприятие и снижает вероятность ошибок, связанных с неправильным форматированием. Prettier — это инструмент, который автоматически форматирует код, обеспечивая единообразие. В отличие от линтинга, который помогает выявлять ошибки, Prettier сосредоточен на визуальном оформлении кода.
Для использования Prettier в проекте Stencil необходимо установить соответствующие зависимости:
npm install --save-dev prettier eslint-plugin-prettier eslint-config-prettier
После установки нужно настроить Prettier в конфигурационном файле
.prettierrc. Пример стандартной конфигурации:
{
"semi": true,
"singleQuote": true,
"trailingComma": "es5",
"printWidth": 80
}
Эти настройки определяют использование точек с запятой, одинарных кавычек для строк, а также правила для пробела в конце строки и максимальной ширины строки.
Важно, чтобы Prettier и ESLint работали вместе, не создавая
конфликтов. Для этого используется плагин
eslint-plugin-prettier, который позволяет ESLint проверять
форматирование кода и подавлять предупреждения о конфликтах
форматирования. Чтобы интегрировать Prettier в конфигурацию ESLint,
нужно добавить следующую настройку в файл
.eslintrc.json:
{
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended"
],
"plugins": [
"@typescript-eslint",
"prettier"
],
"rules": {
"prettier/prettier": "error"
}
}
Эта конфигурация расширяет базовые правила ESLint правилами для Prettier, а также позволяет настраивать поведение линтера так, чтобы он поднимал ошибку, если код не соответствует стандартам форматирования Prettier.
Для того чтобы гарантировать, что код всегда будет проходить линтинг
и форматирование перед коммитом, рекомендуется использовать инструменты
для автоматической проверки изменений. Одним из популярных инструментов
является husky, который позволяет запускать скрипты перед
коммитом.
Для установки Husky и настройки автоматического линтинга и форматирования в проекте Stencil нужно выполнить несколько шагов:
Установить Husky:
npm install --save-dev huskyВключить хук для git:
npx husky installДобавить скрипт для запуска линтинга и форматирования в файл
.husky/pre-commit:
npx husky add .husky/pre-commit "npx lint-staged"Установить lint-staged для работы только с
изменёнными файлами:
npm install --save-dev lint-stagedДобавить конфигурацию для lint-staged в
package.json:
"lint-staged": {
"*.ts": [
"eslint --fix",
"prettier --write"
]
}Теперь, при каждом коммите, будут автоматически запускаться линтинг и форматирование только для изменённых файлов. Это помогает поддерживать код в идеальном состоянии, не требуя от разработчика вручную запускать линтер или форматтер.
Stencil использует TypeScript, что позволяет интегрировать линтинг и
форматирование с системой типов. Это даёт дополнительные преимущества в
контроле за качеством кода. Плагин
@typescript-eslint/eslint-plugin позволяет ESLint
обрабатывать TypeScript-код, выявляя ошибки и улучшая код с учётом
типизации.
Stencil, будучи TypeScript-фреймворком, позволяет максимально использовать преимущества статической типизации, предотвращая многие типовые ошибки на ранних стадиях разработки. Однако важно, чтобы линтинг и форматирование не игнорировали типы и не создавали конфликтов с системой типов TypeScript. Для этого в конфигурации линтинга используются правила, которые учитывают специфику TypeScript.
Корректная настройка линтинга и форматирования в проекте на Stencil является неотъемлемой частью поддержания высокого качества кода. Использование таких инструментов, как ESLint и Prettier, в сочетании с автоматизацией через Husky и lint-staged позволяет улучшить процессы разработки, минимизировать ошибки и сделать код удобочитаемым и единообразным. Правильная конфигурация линтинга и форматирования в Stencil помогает создать стабильный и поддерживаемый проект, что особенно важно при работе в команде.