Skip to content

lisilinhart/eslint-plugin-pinia

Repository files navigation

eslint-plugin-pinia

npm test

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

Licence

MIT Licence © 2024

Contributing

Please check the Contributing file.

This project exists thanks to all the people who contribute 😍!