TypeScript resolver plugin for eslint-plugin-import that enables TypeScript module resolution with path mapping and @types/* support
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Factory function for creating ESLint-compatible resolver instances with TypeScript support and automatic configuration detection.
Creates a resolver instance compatible with eslint-plugin-import-x (version 4.5.0+) that can be used directly in ESLint flat configuration.
/**
* Creates an ESLint-compatible TypeScript import resolver
* @param options - TypeScript resolver configuration options
* @returns Resolver object with interfaceVersion 3, name, and resolve method
*/
function createTypeScriptImportResolver(
options?: TypeScriptResolverOptions | null
): {
interfaceVersion: 3;
name: string;
resolve(source: string, file: string): ResolvedResult;
};Usage Examples:
import { createTypeScriptImportResolver } from "eslint-import-resolver-typescript";
// Basic resolver creation
const resolver = createTypeScriptImportResolver({
alwaysTryTypes: true,
project: "./tsconfig.json"
});
// Use in ESLint flat config
export default [
{
settings: {
'import-x/resolver-next': [
createTypeScriptImportResolver({
alwaysTryTypes: true,
bun: true,
project: 'path/to/folder',
}),
],
},
},
];
// Multiple TypeScript configurations
const monorepoResolver = createTypeScriptImportResolver({
project: [
'packages/*/tsconfig.json',
'other-packages/*/jsconfig.json',
],
noWarnOnMultipleProjects: true
});
// Glob pattern support
const globResolver = createTypeScriptImportResolver({
project: 'packages/*/{ts,js}config.json'
});The created resolver implements the ESLint resolver interface version 3:
interface EslintResolver {
/** ESLint resolver interface version */
interfaceVersion: 3;
/** Resolver name identifier */
name: string;
/**
* Resolve method called by ESLint for each import
* @param source - Module specifier to resolve
* @param file - Current file path containing the import
* @returns Resolution result
*/
resolve(source: string, file: string): ResolvedResult;
}The created resolver provides several advanced features:
The resolver factory accepts comprehensive configuration options:
interface TypeScriptResolverOptions extends NapiResolveOptions {
/** TypeScript project configuration paths */
project?: string[] | string;
/** Whether to always try to resolve @types packages (default: true) */
alwaysTryTypes?: boolean;
/** Whether Bun core modules should be accounted for */
bun?: boolean;
/** Suppress multiple projects warning */
noWarnOnMultipleProjects?: boolean;
// Inherited from NapiResolveOptions
/** Condition names for package.json exports resolution */
conditionNames?: string[];
/** File extensions to resolve */
extensions?: string[];
/** Extension aliases for TypeScript compilation */
extensionAlias?: Record<string, string[]>;
/** Package.json main fields priority */
mainFields?: string[];
}Single Project Configuration:
const resolver = createTypeScriptImportResolver({
project: './tsconfig.json',
alwaysTryTypes: true
});Monorepo Configuration:
const resolver = createTypeScriptImportResolver({
project: [
'packages/module-a/tsconfig.json',
'packages/module-b/jsconfig.json',
],
noWarnOnMultipleProjects: true
});Glob Pattern Configuration:
const resolver = createTypeScriptImportResolver({
project: 'packages/*/{ts,js}config.json'
});Bun Environment Configuration:
const resolver = createTypeScriptImportResolver({
bun: true,
project: './tsconfig.json'
});Custom Extensions and Conditions:
const resolver = createTypeScriptImportResolver({
extensions: ['.ts', '.tsx', '.js', '.jsx', '.mjs'],
conditionNames: ['types', 'import', 'require', 'default'],
mainFields: ['types', 'module', 'main']
});For older versions of eslint-plugin-import or eslint-plugin-import-x, use the traditional configuration approach:
{
"settings": {
"import/resolver": {
"typescript": {
"alwaysTryTypes": true,
"project": "./tsconfig.json"
}
}
}
}The resolver factory implements several performance optimizations:
These optimizations ensure that the resolver performs efficiently even in large codebases with complex TypeScript configurations.
Install with Tessl CLI
npx tessl i tessl/npm-eslint-import-resolver-typescript