project-root/
├── node_modules/
├── src/
│ ├── index.ts
│ ├── types.ts
│ ├── core/
│ │ ├── resolve.ts
│ │ ├── modulePathMapper.ts
│ │ └── ...
│ └── utils/
│ ├── helpers.ts
│ ├── log.ts
│ ├── path.ts
│ └── ...
├── tests/
│ ├── e2e/
│ ├── unit/
│ └── fixtures/
│ └── e2e/
├── tsconfig.json
├── tsconfig.base.json
├── vitest.e2e.ts
└── vitest.unit.tsThis plugin adds TypeScript support to [eslint-plugin-import][] (Or maybe you want to try [eslint-plugin-i][] for faster speed)
This means you can:
import/requirefiles with extension.cts/.mts/.ts/.tsx/.d.cts/.d.mts/.d.ts- Use
pathsdefined intsconfig.json - Prefer resolving
@types/*definitions over plain.js/.jsx - Multiple tsconfigs support just like normal
imports/exportsfields support inpackage.json
# 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-typescriptOptions from enhanced-resolve
mainFields |
conditionNames |
extensions |
extensionAlias |
|---|---|---|---|
| "types" | "types" | ".ts" | ".js": [ ".ts", ".tsx", ".d.ts", ".js" ] |
| "typings" | "import" | ".tsx" | ".jsx": [".tsx", ".d.ts", ".jsx"] |
| "main" | "require" | ".d.ts" | ".cjs": [".cts", ".d.cts", ".cjs"] |
| "module" | "node" | ".js" | ".mjs": [".mts", ".d.mts", ".mjs"] |
| "exports" | "node-addons" | ".jsx" | |
| "browser" | ".json" | ||
| "default" | ".node" |
You can pass through other options of enhanced-resolve directly