eslint-import-resolver-typescript
![GitHub Release](https://img.shields.io/github/release/alexgorbatchev/eslint-import-resolver-typescript)
![David Dev](https://img.shields.io/david/dev/alexgorbatchev/eslint-import-resolver-typescript.svg)
![codechecks.io](https://raw.githubusercontent.com/codechecks/docs/master/images/badges/badge-default.svg?sanitize=true)
This plugin adds TypeScript support to eslint-plugin-import
.
This means you can:
import
/require
files with extension .ts
/.tsx
!- Use
paths
defined in tsconfig.json
. - Prefer resolve
@types/*
definitions over plain .js
. - Multiple tsconfigs support just like normal.
TOC
Notice
After version 2.0.0, .d.ts
will take higher priority then normal .js
files on resolving node_modules
packages in favor of @types/*
definitions.
If you're facing some problems on rules import/default
or import/named
from eslint-plugin-import, do not post any issue here, because they are just working exactly as expected on our sides, take https://github.com/benmosher/eslint-plugin-import/issues/1525 as reference or post a new issue to eslint-plugin-import instead.
Installation
npm i -D eslint-plugin-import @typescript-eslint/parser eslint-import-resolver-typescript
yarn add -D eslint-plugin-import @typescript-eslint/parser eslint-import-resolver-typescript
Configuration
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 it doesn't contain any source code, like `@types/unist`
// Choose from one of the "project" configs below or omit to use <root>/tsconfig.json by default
// use <root>/path/to/folder/tsconfig.json
"project": "path/to/folder",
// Multiple tsconfigs (Useful for monorepos)
// use a glob pattern
"project": "packages/*/tsconfig.json",
// use an array
"project": [
"packages/module-a/tsconfig.json",
"packages/module-b/tsconfig.json"
],
// use an array of glob patterns
"project": [
"packages/*/tsconfig.json",
"other-packages/*/tsconfig.json"
]
}
}
}
}
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.