This plugin adds `TypeScript` support to `eslint-plugin-import`
npm install eslint-import-resolver-typescript









This is a resolver for eslint-plugin-import(-x) plugin, not an ESLint plugin itself, it adds [TypeScript][] support to [eslint-plugin-import][]. (Or maybe you want to try [eslint-plugin-import-x][] for faster speed)
This means you can:
- import/require files with extension .cts/.mts/.ts/.tsx/.d.cts/.d.mts/.d.ts
- Use paths defined in tsconfig.json
- Prefer resolving @types/* definitions over plain .js/.jsx
- Multiple tsconfigs support, just like normal
- imports/exports fields support in package.json
- Notice
- Installation
- eslint-plugin-import-x
- eslint-plugin-import
- Configuration
- eslint.config.js
- .eslintrc
- Other environments
- Bun
- Options from unrs-resolver
- conditionNames
- extensions
- extensionAlias
- mainFields
- Other options
- Default options
- Contributing
- Sponsors and Backers
- Sponsors
- Backers
- Changelog
- License
- Star History
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.
If you're facing some problems with rules import/default or import/named from [eslint-plugin-import][], do not post any issue here, because they are working exactly as expected on our side. Take import-js/eslint-plugin-import#1525 as reference or post a new issue on [eslint-plugin-import][] instead.
``shnpm
npm i -D eslint-plugin-import-x eslint-import-resolver-typescript
$3
`sh
npm
npm i -D eslint-plugin-import eslint-import-resolver-typescriptpnpm
pnpm i -D eslint-plugin-import eslint-import-resolver-typescriptyarn
yarn add -D eslint-plugin-import eslint-import-resolver-typescriptbun
bun add -d eslint-plugin-import eslint-import-resolver-typescript
`Configuration
$3
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:`js
// eslint.config.js (CommonJS is also supported)
import { createTypeScriptImportResolver } from 'eslint-import-resolver-typescript'export default [
{
settings: {
'import-x/resolver-next': [
createTypeScriptImportResolver({
alwaysTryTypes: true, // Always try to resolve types under
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 /tsconfig.json or /jsconfig.json by default
// Use /path/to/folder/tsconfig.json or /path/to/folder/jsconfig.json
project: 'path/to/folder',
// Multiple tsconfigs/jsconfigs (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',
],
}),
],
},
},
]
`But if you are using
eslint-plugin-import or the older version of eslint-plugin-import-x, you can't use require/import:`js
// eslint.config.js (CommonJS is also supported)
export default [
{
settings: {
'import/resolver': {
typescript: {
alwaysTryTypes: true, // Always try to resolve types under 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 /tsconfig.json or /jsconfig.json by default
// Use /path/to/folder/tsconfig.json or /path/to/folder/jsconfig.json
project: 'path/to/folder',
// Multiple tsconfigs/jsconfigs (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',
],
},
},
},
},
]
`$3
Add the following to your
.eslintrc config:`jsonc
{
"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 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 /tsconfig.json or /jsconfig.json by default
// Use /path/to/folder/tsconfig.json or /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",
],
},
},
},
}
`$3
#### 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.
- Run ESLint with bun --bun eslint.
- Configure run.bun in bunfig.toml.Options from [
unrs-resolver][]$3
Default:
`jsonc
[
"types",
"import", // APF: https://angular.io/guide/angular-package-format
"esm2020",
"es2020",
"es2015",
"require",
"node",
"node-addons",
"browser",
"default",
]
`$3
Default:
`jsonc
[
// .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",
]
`$3
Default:
`jsonc
{
".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"],
}
`$3
Default:
`jsonc
[
"types",
"typings", // APF: https://angular.io/guide/angular-package-format
"fesm2020",
"fesm2015",
"esm2020",
"es2020",
"module",
"jsnext:main",
"main",
]
`$3
You can pass through other options of [
unrs-resolver][] directly.$3
You can reuse
defaultConditionNames, defaultExtensions, defaultExtensionAlias, and defaultMainFields by directly using require/import.Contributing
- Make sure your change is covered by a test import.
- Make sure that
yarn test passes without a failure.
- Make sure that yarn lint passes without conflicts.
- Make sure your code changes match our type-coverage settings: yarn type-coverage.We have GitHub Actions, which will run the above commands on your PRs.
If either fails, we won't be able to merge your PR until it's fixed.
Sponsors and Backers

$3
| 1stG | RxTS | UnTS |
| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
|  |  |  |
$3
| 1stG | RxTS | UnTS |
| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
|  |  |  |
Changelog
Detailed changes for each release are documented in CHANGELOG.md.
License
[ISC][]
Star History
[
eslint-plugin-import]: https://github.com/import-js/eslint-plugin-import
[eslint-plugin-import-x]: https://github.com/un-ts/eslint-plugin-import-x
[unrs-resolver]: https://github.com/unrs/unrs-resolver
[typescript`]: https://www.typescriptlang.org