Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork72
This resolver adds `TypeScript` support to `eslint-plugin-import(-x)`
License
import-js/eslint-import-resolver-typescript
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This is a resolver foreslint-plugin-import(-x)
plugin, not an ESLint plugin itself, it addsTypeScript
support toeslint-plugin-import
. (Or maybe you want to tryeslint-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 intsconfig.json
- Prefer resolving
@types/*
definitions over plain.js
/.jsx
- Multiple tsconfigs support, just like normal
imports/exports
fields support inpackage.json
- Notice
- Installation
- Configuration
- Options from
unrs-resolver
- Contributing
- Sponsors and Backers
- Changelog
- License
- Star History
After version 2.0.0,.d.ts
will take higher priority than normal.js
/.jsx
files on resolvingnode_modules
packages in favor of@types/*
definitions or its own definition.
If you're facing some problems with rulesimport/default
orimport/named
fromeslint-plugin-import
, do not post any issue here, because they are working exactly asexpected on our side. Takeimport-js/eslint-plugin-import#1525 as reference or post a new issue oneslint-plugin-import
instead.
# npmnpm i -D eslint-plugin-import-x eslint-import-resolver-typescript# pnpmpnpm i -D eslint-plugin-import-x eslint-import-resolver-typescript# yarnyarn add -D eslint-plugin-import-x eslint-import-resolver-typescript# bunbun add -d eslint-plugin-import-x eslint-import-resolver-typescript
# npmnpm i -D eslint-plugin-import eslint-import-resolver-typescript# pnpmpnpm i -D eslint-plugin-import eslint-import-resolver-typescript# yarnyarn add -D eslint-plugin-import eslint-import-resolver-typescript# bunbun add -d eslint-plugin-import eslint-import-resolver-typescript
If you are usingeslint-plugin-import-x@>=4.5.0
, you can useimport
/require
to referenceeslint-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 usingeslint-plugin-import
or the older version ofeslint-plugin-import-x
, you can't userequire
/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',],},},},},]
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", ], }, }, },}
Bun provides built-in modules such asbun: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 inConfiguration above. - Run ESLint with
bun --bun eslint
. - Configure
run.bun
inbunfig.toml
.
Options fromunrs-resolver
Default:
["types","import",// APF: https://angular.io/guide/angular-package-format"esm2020","es2020","es2015","require","node","node-addons","browser","default",]
Default:
[// `.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",]
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"],}
Default:
["types","typings",// APF: https://angular.io/guide/angular-package-format"fesm2020","fesm2015","esm2020","es2020","module","jsnext:main","main",]
You can pass through other options ofunrs-resolver
directly.
You can reusedefaultConditionNames
,defaultExtensions
,defaultExtensionAlias
, anddefaultMainFields
by directly usingrequire
/import
.
- 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 ourtype-coverage settings:
yarn type-coverage
.
We haveGitHub 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.
1stG | RxTS | UnTS |
---|---|---|
1stG | RxTS | UnTS |
---|---|---|
Detailed changes for each release are documented inCHANGELOG.md.
About
This resolver adds `TypeScript` support to `eslint-plugin-import(-x)`
Topics
Resources
License
Code of conduct
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.