Eslint plugin that enforces some best practices for writing pinia stores
You'll first need to install ESLint:
npm i eslint --save-dev
Next, install eslint-plugin-pinia
:
npm install eslint-plugin-pinia --save-dev
Add pinia
to the plugins section of your .eslintrc
or eslint.config.js
configuration file. You can omit the eslint-plugin-
prefix:
// .eslintrc [Legacy Config]
{
"plugins": ["pinia"]
}
// eslint.config.js
import pinia from 'eslint-plugin-pinia'
export default [
plugins: {
pinia
}
]
Then configure the rules you want to use under the rules section.
// .eslintrc [Legacy Config]
{
"rules": {
"pinia/require-export-define-store": [
"warn"
]
}
}
// eslint.config.js
import pinia from 'eslint-plugin-pinia'
export default [
{
plugin: {
pinia
},
rules: {
"pinia/require-export-define-store": ["warn"]
}
}
]
To use the recommended configuration, extend it in your .eslintrc
or eslint.config.js
file:
// .eslintrc [Legacy Config]
{
"extends": ["plugin:pinia/recommended"]
}
// eslint.config.js
import pinia from 'eslint-plugin-pinia'
export default [
pinia.configs["recommended-flat"],
]
All recommend rules will be set to error by default. You can however disable some rules by setting turning them off
in your configuration file or by setting them to warn
in your configuration file.
To use the all configuration, extend it in your .eslintrc
or eslint.config.js
file:
// .eslintrc [Legacy Config]
{
"extends": ["plugin:pinia/all"]
}
// eslint.config.js
import pinia from 'eslint-plugin-pinia'
export default [
pinia.configs["all-flat"],
]
💼 Configurations enabled in.
🚫 Configurations disabled in.
🌐 Set in the all
configuration.
🌐 Set in the all-flat
configuration.
✅ Set in the recommended
configuration.
✅ Set in the recommended-flat
configuration.
Name | Description | 💼 | 🚫 | |
---|---|---|---|---|
never-export-initialized-store | Never export an initialized named or default store. | ✅ ✅ | 🌐 🌐 | |
no-duplicate-store-ids | Disallow duplicate store ids. | ✅ ✅ | 🌐 🌐 | |
no-return-global-properties | Disallows returning globally provided properties from Pinia stores. | ✅ ✅ | 🌐 🌐 | |
no-store-to-refs-in-store | Disallow use of storeToRefs inside defineStore | ✅ ✅ | 🌐 🌐 | |
prefer-single-store-per-file | Encourages defining each store in a separate file. | 🌐 🌐 | ||
prefer-use-store-naming-convention | Enforces the convention of naming stores with the prefix use followed by the store name. |
🌐 🌐 ✅ ✅ | ||
require-setup-store-properties-export | In setup stores all state properties must be exported. | ✅ ✅ | 🌐 🌐 |
- eslint-plugin-vitest The core repository structure came from this eslint plugin
MIT Licence © 2024
Please check the Contributing file.
This project exists thanks to all the people who contribute 😍!