ESLint Shareable Config for JavaScript Standard Style in Vue.js Projects with modern flat config format
—
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
ESLint 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