ESLint плагины: pinia
Хранилища (далее сторы) в Pinia — это основа архитектуры любого Vue-приложения. Но чем больше проект, тем сложнее следить за тем, чтобы все defineStore
были реализованы одинаково, не было дублирующихся id, а свойства явно экспортировались.
eslint-plugin-pinia поможет автоматизировать эти проверки: после подключения в ESLint плагин найдет потенциальные ошибки, несогласованный стиль и архитектурные несоответствия в ваших stores
.
Установка
bash
npm install --save-dev eslint-plugin-pinia
js
// eslint.config.js
import piniaPlugin from "eslint-plugin-pinia";
export default [
// ...
piniaPlugin.configs["all-flat"]
];
Что проверяет?
Правила покрывают самые частые ошибки:
never-export-initialized-store
— запрещает экспортировать результатdefineStore()
, только саму функцию.no-duplicate-store-ids
— проверка уникальности id у всехdefineStore
.no-return-global-properties
— запрет возвратаinject
,useRouter
,useRoute
из стора напрямую.no-store-to-refs-in-store
—storeToRefs()
не должны использоваться внутриdefineStore
.prefer-single-store-per-file
— один файл должен содержать один стор. Отключено по умолчаниюprefer-use-store-naming-convention
— названия сторов должны начинаться сuse
:useCartStore
,useUserStore
, и т.д. Отключено по умолчаниюrequire-setup-store-properties-export
— все свойстваstate
в setup-сторе должны быть экспортированы.
Итог
Если вы используете Pinia — этот небольшой плагин поможет избежать многих архитектурных проблем ещё на этапе написания кода. Особенно пригодится в командной работе: сторы будут оформлены единообразно, код станет предсказуемым, а ревью — быстрее и проще.