The eslint-import-resolver-typescript package is a plugin for ESLint that helps in resolving import paths for TypeScript files. It allows ESLint to understand TypeScript syntax and resolve paths according to the TypeScript compiler options. This is particularly useful when using features like path aliases and custom module directories in TypeScript projects.
What are eslint-import-resolver-typescript's main functionalities?
Resolving TypeScript Path Aliases
This feature allows the resolver to use TypeScript's path aliases defined in tsconfig.json to resolve modules, which helps ESLint to understand custom path mappings.
The resolver can be configured to use multiple tsconfig.json files, which is useful in monorepos or projects with multiple TypeScript configurations.
module.exports = {
settings: {
'import/resolver': {
typescript: {
// a list of tsconfig.json to use
project: ['tsconfig.json', 'packages/*/tsconfig.json']
}
}
}
};
Ignoring TypeScript Errors
This feature allows the resolver to ignore TypeScript errors when resolving paths. It is useful when you want ESLint to focus on import/export issues without being blocked by TypeScript compilation errors.
This package provides a resolver for the ESLint plugin import that resolves node modules and commonjs modules. It does not have TypeScript-specific features but is suitable for projects using plain JavaScript.
This resolver is designed for projects using Webpack and allows ESLint to resolve module paths based on the Webpack configuration. It supports features like Webpack aliases and modules, which can be similar to TypeScript path aliases but is tailored for Webpack-specific configurations.
This package integrates with Babel and allows ESLint to resolve modules using Babel's module resolver plugin. It is similar to eslint-import-resolver-typescript in that it helps resolve non-standard module paths, but it is focused on Babel rather than TypeScript.
After version 2.0.0, .d.ts will take higher priority than normal .js/.jsx files on resolving node_modules packages in favor of @types/* definitions or its own definition.
# npm
npm i -D eslint-plugin-import-x eslint-import-resolver-typescript
# pnpm
pnpm i -D eslint-plugin-import-x eslint-import-resolver-typescript
# yarn
yarn add -D eslint-plugin-import-x eslint-import-resolver-typescript
# bun
bun add -d eslint-plugin-import-x eslint-import-resolver-typescript
eslint-plugin-import
# npm
npm i -D eslint-plugin-import eslint-import-resolver-typescript
# pnpm
pnpm i -D eslint-plugin-import eslint-import-resolver-typescript
# yarn
yarn add -D eslint-plugin-import eslint-import-resolver-typescript
# bun
bun add -d eslint-plugin-import eslint-import-resolver-typescript
Configuration
eslint.config.js
If you are using eslint-plugin-import-x@>=4.5.0, you can use import/require to reference eslint-import-resolver-typescript directly in your ESLint flat config:
// eslint.config.js (CommonJS is also supported)import { createTypeScriptImportResolver } from'eslint-import-resolver-typescript'exportdefault [
{
settings: {
'import-x/resolver-next': [
createTypeScriptImportResolver({
alwaysTryTypes: true, // Always try to resolve types under `<root>@types` directory even if it doesn't contain any source code, like `@types/unist`bun: true, // Resolve Bun modules (https://github.com/import-js/eslint-import-resolver-typescript#bun)// Choose from one of the "project" configs below or omit to use <root>/tsconfig.json or <root>/jsconfig.json by default// Use <root>/path/to/folder/tsconfig.json or <root>/path/to/folder/jsconfig.jsonproject: 'path/to/folder',
// Multiple tsconfigs/jsconfigs (Useful for monorepos, but discouraged in favor of `references` supported)// Use a glob patternproject: 'packages/*/{ts,js}config.json',
// Use an arrayproject: [
'packages/module-a/tsconfig.json',
'packages/module-b/jsconfig.json',
],
// Use an array of glob patternsproject: [
'packages/*/tsconfig.json',
'other-packages/*/jsconfig.json',
],
}),
],
},
},
]
But if you are using eslint-plugin-import or the older version of eslint-plugin-import-x, you can't use require/import:
// eslint.config.js (CommonJS is also supported)exportdefault [
{
settings: {
'import/resolver': {
typescript: {
alwaysTryTypes: true, // Always try to resolve types under `<root>@types` directory even if it doesn't contain any source code, like `@types/unist`bun: true, // Resolve Bun modules (https://github.com/import-js/eslint-import-resolver-typescript#bun)// Choose from one of the "project" configs below or omit to use <root>/tsconfig.json or <root>/jsconfig.json by default// Use <root>/path/to/folder/tsconfig.json or <root>/path/to/folder/jsconfig.jsonproject: 'path/to/folder',
// Multiple tsconfigs/jsconfigs (Useful for monorepos, but discouraged in favor of `references` supported)// Use a glob patternproject: 'packages/*/{ts,js}config.json',
// Use an arrayproject: [
'packages/module-a/tsconfig.json',
'packages/module-b/jsconfig.json',
],
// Use an array of glob patternsproject: [
'packages/*/tsconfig.json',
'other-packages/*/jsconfig.json',
],
},
},
},
},
]
.eslintrc
Add the following to your .eslintrc config:
{
"plugins": ["import"],
"rules": {
// Turn on errors for missing imports
"import/no-unresolved": "error",
},
"settings": {
"import/parsers": {
"@typescript-eslint/parser": [".ts", ".tsx"],
},
"import/resolver": {
"typescript": {
"alwaysTryTypes": true, // Always try to resolve types under `<root>@types` directory even if it doesn't contain any source code, like `@types/unist`
"bun": true, // Resolve Bun modules (https://github.com/import-js/eslint-import-resolver-typescript#bun)
// Choose from one of the "project" configs below or omit to use <root>/tsconfig.json or <root>/jsconfig.json by default
// Use <root>/path/to/folder/tsconfig.json or <root>/path/to/folder/jsconfig.json
"project": "path/to/folder",
// Multiple tsconfigs (Useful for monorepos, but discouraged in favor of `references` supported)
// Use a glob pattern
"project": "packages/*/{ts,js}config.json",
// Use an array
"project": [
"packages/module-a/tsconfig.json",
"packages/module-b/jsconfig.json",
],
// Use an array of glob patterns
"project": [
"packages/*/tsconfig.json",
"other-packages/*/jsconfig.json",
],
},
},
},
}
Other environments
Bun
Bun provides built-in modules such as bun:test, which are not resolved by default.
Enable Bun built-in module resolution by choosing 1 out of these 3 options:
Set the bun: true option, as shown in Configuration above.
[
// `.mts`, `.cts`, `.d.mts`, `.d.cts`, `.mjs`, `.cjs` are not included because `.cjs` and `.mjs` must be used explicitly
".ts",
".tsx",
".d.ts",
".js",
".jsx",
".json",
".node",
]
extensionAlias
Default:
{
".js": [
".ts",
// `.tsx` can also be compiled as `.js`
".tsx",
".d.ts",
".js",
],
".ts": [".ts", ".d.ts", ".js"],
".jsx": [".tsx", ".d.ts", ".jsx"],
".tsx": [
".tsx",
".d.ts",
".jsx",
// `.tsx` can also be compiled as `.js`
".js",
],
".cjs": [".cts", ".d.cts", ".cjs"],
".cts": [".cts", ".d.cts", ".cjs"],
".mjs": [".mts", ".d.mts", ".mjs"],
".mts": [".mts", ".d.mts", ".mjs"],
}
This plugin adds `TypeScript` support to `eslint-plugin-import`
The npm package eslint-import-resolver-typescript receives a total of 13,396,144 weekly downloads. As such, eslint-import-resolver-typescript popularity was classified as popular.
We found that eslint-import-resolver-typescript demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.It has 3 open source maintainers collaborating on the project.
Package last updated on 25 Jun 2025
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Socket CEO Feross Aboukhadijeh and a16z partner Joel de la Garza discuss vibe coding, AI-driven software development, and how the rise of LLMs, despite their risks, still points toward a more secure and innovative future.