ESLint Shareable Config for JavaScript Standard Style in Vue.js Projects with modern flat config format
npx @tessl/cli install tessl/npm-vue--eslint-config-standard@9.0.0ESLint Shareable Configuration for JavaScript Standard Style in Vue.js Projects
npm add --dev @vue/eslint-config-standardimport standard from "@vue/eslint-config-standard";import pluginVue from "eslint-plugin-vue";
import standard from "@vue/eslint-config-standard";
export default [
...pluginVue.configs["flat/essential"],
...standard,
]This ESLint configuration provides a comprehensive JavaScript Standard Style setup specifically tailored for Vue.js projects. It uses ESLint's modern flat configuration format and integrates multiple specialized rule sets through a deep merge system:
The configuration automatically handles rule conflicts and provides a unified experience across JavaScript code and Vue.js templates.
export default: ESLintConfig[]The main export is an array containing a single merged ESLint configuration object. This configuration combines all rule sets and settings into a cohesive Standard Style setup for Vue.js projects.
Usage Example:
import standard from "@vue/eslint-config-standard";
// standard is an array of ESLint configuration objects
console.log(standard.length); // 1
console.log(standard[0].name); // "vue-standard"Configuration Object Properties:
name: "vue-standard" - Configuration identifierlanguageOptions: ECMAScript 2022, module format, JSX supportplugins: Integrated ESLint plugins (n, promise, import-x, @stylistic)rules: Complete JavaScript Standard Style rule set (290+ rules including plugin rules)settings: Import resolver configuration with path alias supportThe configuration includes 220+ JavaScript Standard Style rules covering:
no-unused-vars, no-undef, prefer-constindent, quotes, semi, comma-dangleeqeqeq, no-eval, no-witharrow-spacing, template-curly-spacing, rest-spread-spacingImport Rules (import-x plugin):
import-x/export: Ensure named exports existimport-x/first: Ensure imports come firstimport-x/no-duplicates: Prevent duplicate importsNode.js Rules (n plugin):
n/handle-callback-err: Require error handling in callbacksn/no-deprecated-api: Prevent usage of deprecated Node.js APIsn/process-exit-as-throw: Treat process.exit() as throwPromise Rules (promise plugin):
promise/param-names: Enforce consistent parameter names in Promise constructorsStylistic Rules (@stylistic plugin):
JavaScript Standard Style rules are automatically extended to Vue.js template expressions:
vue/indent: Template indentation matching JavaScript stylevue/quotes: Consistent quote usage in templatesvue/comma-dangle: Template expression comma handlinginterface LanguageOptions {
ecmaVersion: 2022;
sourceType: "module";
parserOptions: {
ecmaFeatures: {
jsx: true;
};
};
globals: GlobalsConfig;
}Global Variables:
globalThis, WeakRef, etc.)process, Buffer, __dirname, etc.)document, navigator, window)interface PeerDependencies {
eslint: "^9.10.0";
"eslint-plugin-vue": "^9.28.0 || ^10.0.0";
}The configuration automatically includes these plugins:
interface IntegratedPlugins {
"@stylistic/eslint-plugin": "^4.2.0";
"eslint-import-resolver-next": "^0.4.2";
"eslint-plugin-import-x": "^4.6.1";
"eslint-plugin-n": "^17.16.2";
"eslint-plugin-promise": "^7.2.1";
"globals": "^16.0.0";
}The configuration uses eslint-import-resolver-next to automatically resolve:
tsconfig.jsonjsconfig.jsoninterface ResolverSettings {
"import-x/resolver-next": [
NodeResolver,
NextImportResolver
];
}To enable import resolution for path aliases:
tsconfig.json:{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["src/*"],
"~/*": ["lib/*"]
}
}
}jsconfig.json for JavaScript projects:{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
}
}
}The resolver will automatically detect and use these configurations.
import pluginVue from "eslint-plugin-vue";
import standard from "@vue/eslint-config-standard";
export default [
...pluginVue.configs["flat/essential"],
...standard,
{
// Override or add rules
rules: {
'import-x/extensions': ['error', 'ignorePackages'],
'vue/max-attributes-per-line': ['error', { singleline: 3 }]
}
}
]export default [
{
files: ['**/*.{js,mjs,jsx,vue}']
},
...pluginVue.configs['flat/essential'],
...standard
]eslint-plugin-vue version 9.28.0 or higherThis configuration requires ESLint's flat configuration format. For legacy .eslintrc support, use version ^13.0.0:
npm install @vue/eslint-config-standard@^13.0.0When migrating from other JavaScript Standard Style configurations:
eslint-plugin-vue is properly configured