ESLint configuration library for Vue.js + TypeScript projects with advanced utilities and preset configurations
—
Deprecated functions provided for backward compatibility with versions ≤14.2.0. These functions are maintained for existing projects but should not be used in new projects.
Legacy configuration function that creates ESLint configs with simplified options.
import type { FlatConfig } from '@typescript-eslint/utils/ts-eslint';
/**
* @deprecated Use `defineConfigWithVueTs` + `vueTsConfigs` instead
* Creates ESLint configuration with legacy options format
* @param options - Configuration options with extends and script language support
* @returns ESLint flat configuration array
*/
export default function createConfig(options?: ConfigOptions): FlatConfig.ConfigArray;
type ConfigOptions = ProjectOptions & {
/** Array of config names to extend from typescript-eslint. Defaults to `['recommended']` */
extends?: ExtendableConfigName[];
/**
* @deprecated Use ProjectOptions.scriptLangs instead
* Record of script languages with boolean flags
*/
supportedScriptLangs?: Record<ScriptLang, boolean>;
};
interface ProjectOptions {
tsSyntaxInTemplates?: boolean;
scriptLangs?: ScriptLang[];
allowComponentTypeUnsafety?: boolean;
rootDir?: string;
}
type ScriptLang = "ts" | "tsx" | "js" | "jsx";
type ExtendableConfigName =
| "all" | "base" | "disableTypeChecked" | "eslintRecommended"
| "recommended" | "recommendedTypeChecked" | "recommendedTypeCheckedOnly"
| "strict" | "strictTypeChecked" | "strictTypeCheckedOnly"
| "stylistic" | "stylisticTypeChecked" | "stylisticTypeCheckedOnly";Usage Examples (Legacy):
// Legacy import style
import createConfig from "@vue/eslint-config-typescript";
// Basic configuration
export default createConfig();
// Configuration with extends
export default createConfig({
extends: ["recommended", "stylistic"],
});
// Configuration with script language support
export default createConfig({
extends: ["strictTypeChecked"],
supportedScriptLangs: {
ts: true,
tsx: false,
js: false,
jsx: false,
},
rootDir: process.cwd(),
});Migration to Modern API:
// OLD (deprecated)
import createConfig from "@vue/eslint-config-typescript";
export default createConfig({
extends: ["recommended", "stylistic"],
supportedScriptLangs: { ts: true, js: false, tsx: false, jsx: false },
});
// NEW (recommended)
import {
defineConfigWithVueTs,
vueTsConfigs,
configureVueProject
} from "@vue/eslint-config-typescript";
configureVueProject({
scriptLangs: ["ts"],
});
export default defineConfigWithVueTs(
vueTsConfigs.recommended,
vueTsConfigs.stylistic,
);Deprecated alias for defineConfigWithVueTs function.
/**
* @deprecated `defineConfig` is renamed to `defineConfigWithVueTs` in 14.3.0
* Alias for defineConfigWithVueTs function
*/
export const defineConfig: typeof defineConfigWithVueTs;Usage Examples (Legacy):
// OLD (deprecated)
import { defineConfig, vueTsConfigs } from "@vue/eslint-config-typescript";
export default defineConfig(vueTsConfigs.recommended);
// NEW (recommended)
import { defineConfigWithVueTs, vueTsConfigs } from "@vue/eslint-config-typescript";
export default defineConfigWithVueTs(vueTsConfigs.recommended);The createConfig function automatically:
supportedScriptLangs object to scriptLangs arrayconfigureVueProject internally with converted optionsextends array to corresponding vueTsConfigs entriesdefineConfigWithVueTsProvides enhanced error messages for common migration issues:
// Invalid config name detection
createConfig({ extends: ["recommended-type-checked"] });
// Error: The config name "recommended-type-checked" is not supported in "extends".
// Please use "recommendedTypeChecked" instead.
// Unknown config detection
createConfig({ extends: ["unknown-config"] });
// Error: Unknown config name in "extends": unknown-config.// Default configuration when no options provided
const defaultOptions = {
extends: ["recommended"],
supportedScriptLangs: {
ts: true,
tsx: false,
js: false,
jsx: false
},
rootDir: process.cwd(),
};// Before
import createConfig from "@vue/eslint-config-typescript";
import { defineConfig } from "@vue/eslint-config-typescript";
// After
import {
defineConfigWithVueTs,
vueTsConfigs,
configureVueProject,
} from "@vue/eslint-config-typescript";// Before - createConfig
export default createConfig({
extends: ["strict"],
supportedScriptLangs: { ts: true, js: true, tsx: false, jsx: false },
});
// After - modern API
configureVueProject({
scriptLangs: ["ts", "js"],
});
export default defineConfigWithVueTs(vueTsConfigs.strict);// Before - mixed legacy/modern patterns
export default createConfig({
extends: ["recommendedTypeChecked"],
// Custom rules were difficult to add
});
// After - full flexibility
configureVueProject({
scriptLangs: ["ts"],
tsSyntaxInTemplates: true,
});
export default defineConfigWithVueTs(
vueTsConfigs.recommendedTypeChecked,
{
name: "custom-overrides",
files: ["**/*.vue"],
rules: {
// Easy to add custom rules
"vue/multi-word-component-names": "off",
},
},
);createConfig was the primary APIdefineConfig renamed to defineConfigWithVueTs, defineConfig marked deprecatedcreateConfig will be removed, defineConfig alias will be removedRecommendation: Migrate to the modern API (defineConfigWithVueTs + vueTsConfigs + configureVueProject) for better flexibility and future compatibility.
Install with Tessl CLI
npx tessl i tessl/npm-vue--eslint-config-typescript