eslint-plugin-pinia
v0.4.1
Published
ESLint plugin for Pinia best practices
Downloads
7,348
Maintainers
Readme
eslint-plugin-pinia
Eslint plugin that enforces some best practices for writing pinia stores
Installation
You'll first need to install ESLint:
npm i eslint --save-dev
Next, install eslint-plugin-pinia
:
npm install eslint-plugin-pinia --save-dev
Usage
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
}
]
Rule Configuration
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"]
}
}
]
Recommended
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.
all rules
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"],
]
Rules
💼 Configurations enabled in.
⚠️ Configurations set to warn 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. | ✅ ✅ | 🌐 🌐 | |
Credits
- eslint-plugin-vitest The core repository structure came from this eslint plugin
Licence
MIT Licence © 2024
Contributing
Please check the Contributing file.
This project exists thanks to all the people who contribute 😍!