Linting и форматирование кода — неотъемлемая часть современного веб-разработки на JavaScript и особенно актуальны при работе с компонентами Polymer. Эти процессы обеспечивают единообразие кода, предотвращают ошибки и повышают читаемость, что критично при работе с крупными проектами.
Для проектов на Polymer чаще всего используют ESLint, поскольку он гибкий и поддерживает современный синтаксис ES6/ESNext, включая веб-компоненты. Основные шаги по настройке:
npm install eslint eslint-plugin-html --save-dev
eslint — основной инструмент для анализа кода.eslint-plugin-html — позволяет линтить HTML-файлы,
включая <script> внутри компонентов Polymer..eslintrc.json:{
"env": {
"browser": true,
"es2021": true
},
"extends": "eslint:recommended",
"plugins": ["html"],
"parserOptions": {
"ecmaVersion": 12,
"sourceType": "module"
},
"rules": {
"no-unused-vars": "warn",
"no-console": "off",
"semi": ["error", "always"],
"quotes": ["error", "single"]
}
}
env задает окружение, определяя
глобальные переменные.extends позволяет использовать базовые
правила.plugins добавляет поддержку
HTML-файлов с <script> внутри.rules — набор правил, которые можно
гибко настраивать под командный стиль кода.npx eslint src/
Это просканирует все файлы в директории src и выведет
предупреждения и ошибки.
Форматирование обеспечивает единообразие стиля кода и упрощает поддержку. Для Polymer-HTML компонентов удобно использовать Prettier.
npm install --save-dev prettier prettier-plugin-html
.prettierrc:{
"semi": true,
"singleQuote": true,
"tabWidth": 2,
"useTabs": false,
"htmlWhitespaceSensitivity": "ignore",
"trailingComma": "es5"
}
htmlWhitespaceSensitivity важен для
корректного форматирования шаблонов Polymer
<template>.semi, singleQuote,
trailingComma обеспечивают единый стиль JS-кода.npx prettier --write src/
Все файлы будут автоматически отформатированы в соответствии с правилами Prettier.
Для оптимального результата часто используют комбинацию ESLint + Prettier. Для этого:
npm install --save-dev eslint-config-prettier eslint-plugin-prettier
.eslintrc.json:{
"extends": ["eslint:recommended", "plugin:prettier/recommended"],
"plugins": ["html", "prettier"],
"rules": {
"prettier/prettier": "error"
}
}
eslint-plugin-prettier позволяет запускать
Prettier как правило ESLint.eslint-config-prettier отключает конфликтующие правила
ESLint, которые могут противоречить Prettier.Для обеспечения качества кода перед коммитом используют Husky и lint-staged:
npm install --save-dev husky lint-staged
package.json:"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"src/**/*.{js,html}": [
"eslint --fix",
"prettier --write"
]
}
Polymer-компоненты используют HTML-шаблоны, которые
могут содержать встроенные <script> и
<style>. Важно учитывать:
<script>
внутри <template>. Использование
eslint-plugin-html решает эту задачу.Linting и форматирование обеспечивают предсказуемость поведения Polymer-компонентов, упрощают командную работу и предотвращают распространенные ошибки. Корректно настроенные инструменты позволяют сосредоточиться на логике компонентов, а не на стилевых и синтаксических проблемах.