ESLint plugin for Svelte applications providing comprehensive linting rules and configurations using AST parsing
—
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Predefined ESLint configurations optimized for Svelte development with different rule sets and compatibility options.
Essential configuration for Svelte files with parser setup and core rule configuration.
/**
* Base configuration for Svelte files
* Sets up svelte-eslint-parser and essential rules
*/
const base: Linter.Config[];Features:
Usage:
import svelte from 'eslint-plugin-svelte';
export default [
...svelte.configs.base,
// your additional configuration
];Recommended configuration extending base with production-ready rule set.
/**
* Recommended configuration for Svelte projects
* Extends base configuration with recommended rules
*/
const recommended: Linter.Config[];Features:
Enabled Rules:
svelte/comment-directive: 'error'svelte/infinite-reactive-loop: 'error'svelte/no-at-debug-tags: 'warn'svelte/no-at-html-tags: 'error'svelte/no-dom-manipulating: 'error'svelte/no-dupe-else-if-blocks: 'error'svelte/no-dupe-on-directives: 'error'svelte/no-dupe-style-properties: 'error'svelte/no-dupe-use-directives: 'error'svelte/no-export-load-in-svelte-module-in-kit-pages: 'error'svelte/no-immutable-reactive-statements: 'error'svelte/no-inner-declarations: 'error'svelte/no-inspect: 'warn'svelte/no-navigation-without-resolve: 'error'svelte/no-not-function-handler: 'error'svelte/no-object-in-text-mustaches: 'error'svelte/no-raw-special-elements: 'error'svelte/no-reactive-functions: 'error'svelte/no-reactive-literals: 'error'svelte/no-reactive-reassign: 'error'svelte/no-shorthand-style-property-overrides: 'error'svelte/no-store-async: 'error'svelte/no-svelte-internal: 'error'svelte/no-unknown-style-directive-property: 'error'svelte/no-unnecessary-state-wrap: 'error'svelte/no-unused-props: 'error'svelte/no-unused-svelte-ignore: 'error'svelte/no-useless-children-snippet: 'error'svelte/no-useless-mustaches: 'error'svelte/prefer-svelte-reactivity: 'error'svelte/prefer-writable-derived: 'error'svelte/require-each-key: 'error'svelte/require-event-dispatcher-types: 'error'svelte/require-store-reactive-access: 'error'svelte/system: 'error'svelte/valid-each-key: 'error'svelte/valid-prop-names-in-kit-pages: 'error'Usage:
import svelte from 'eslint-plugin-svelte';
export default [
...svelte.configs.recommended,
// your additional configuration
];Configuration optimized for compatibility with Prettier formatting.
/**
* Configuration compatible with Prettier formatting
* Disables conflicting stylistic rules
*/
const prettier: Linter.Config[];Features:
Usage:
import svelte from 'eslint-plugin-svelte';
export default [
...svelte.configs.prettier,
// your additional configuration
];Configuration with all available rules enabled for comprehensive linting.
/**
* Configuration with all available rules enabled
* Use with caution - includes experimental and strict rules
*/
const all: Linter.Config[];Features:
Usage:
import svelte from 'eslint-plugin-svelte';
export default [
...svelte.configs.all,
// override specific rules as needed
{
rules: {
'svelte/some-strict-rule': 'warn' // downgrade if needed
}
}
];Legacy flat config aliases for backward compatibility.
/**
* Backward compatibility aliases
* These reference the same configurations as above
*/
interface BackwardCompatibilityConfigs {
'flat/base': typeof base;
'flat/recommended': typeof recommended;
'flat/prettier': typeof prettier;
'flat/all': typeof all;
}Usage:
import svelte from 'eslint-plugin-svelte';
// These are equivalent
export default [...svelte.configs.recommended];
export default [...svelte.configs['flat/recommended']];import js from '@eslint/js';
import ts from 'typescript-eslint';
import svelte from 'eslint-plugin-svelte';
import globals from 'globals';
export default ts.config(
js.configs.recommended,
...ts.configs.recommended,
...svelte.configs.recommended,
{
languageOptions: {
globals: {
...globals.browser,
...globals.node
}
}
},
{
files: ['**/*.svelte'],
languageOptions: {
parserOptions: {
svelteConfig: './svelte.config.js'
}
}
}
);import svelte from 'eslint-plugin-svelte';
export default [
...svelte.configs.recommended,
{
rules: {
// Override specific rules
'svelte/no-at-debug-tags': 'off',
'svelte/no-unused-props': 'warn',
'svelte/prefer-class-directive': 'error'
}
}
];interface PluginConfigs {
base: Linter.Config[];
recommended: Linter.Config[];
prettier: Linter.Config[];
all: Linter.Config[];
'flat/base': Linter.Config[];
'flat/recommended': Linter.Config[];
'flat/prettier': Linter.Config[];
'flat/all': Linter.Config[];
}interface Linter.Config {
name?: string;
files?: string[];
languageOptions?: {
parser?: any;
parserOptions?: {
svelteConfig?: any;
projectService?: boolean;
extraFileExtensions?: string[];
};
globals?: Record<string, any>;
};
plugins?: Record<string, any>;
processor?: string;
rules?: Record<string, any>;
}