
Product
Introducing Repository Access Permissions and Custom Roles
Socket now supports Custom Roles and Repository Access Permissions so organizations can control who can access specific repositories and actions.
eslint-plugin-pinia
Advanced tools
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 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. | ✅ ✅ | 🌐 🌐 |
MIT Licence © 2024
Please check the Contributing file.
This project exists thanks to all the people who contribute 😍!
FAQs
ESLint plugin for Pinia best practices
We found that eslint-plugin-pinia demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket now supports Custom Roles and Repository Access Permissions so organizations can control who can access specific repositories and actions.

Product
Socket MCP now lets AI assistants review org alerts, investigate threats using the Socket threat feed, and inspect package files in addition to dependency scoring.

Product
Socket Firewall blocks malicious VS Code and Open VSX extensions before install, protecting developers from compromised editor marketplaces.