paths are not resolved in Solution Style (Project References) setup unless explicitly listed in project array
I am using a standard Vite + TypeScript setup which uses the "Solution Style" configuration (a root `tsconfig.json` that references `tsconfig.app.json` and `tsconfig.node.json`).
According to the [[README](https://www.npmjs.com/package/eslint-import-resolver-typescript)](https://www.npmjs.com/package/eslint-import-resolver-typescript), using an array of projects is "discouraged in favor of `references` supported".
However, when I follow this advice and omit the `project` setting (or point it strictly to the root `tsconfig.json`), the resolver fails to read the `paths` defined in the referenced `tsconfig.app.json`. It appears the resolver does not traverse/merge the `paths` from the referenced projects into the current context.
To make it work, I am forced to use the "discouraged" array approach.
### Reproduction
**File Structure:**
```text
/
├── tsconfig.json (Root)
├── tsconfig.app.json (Contains paths)
├── tsconfig.node.json
└── src/
└── components/
└── StateButton.tsx
```
**1. Root `tsconfig.json`**
```json
{
"files": [],
"references": [
{ "path": "./tsconfig.node.json" },
{ "path": "./tsconfig.app.json" }
]
}
```
**2. `tsconfig.app.json` (Where paths are defined)**
```json
{
"compilerOptions": {
"paths": {
"@components/*": ["./src/components/*"]
}
// ... other options
},
"include": ["src/**/*"]
}
```
**3. ESLint Configuration (`eslint.config.js`)**
**FAILING CONFIG (Following README advice):**
```javascript
settings: {
'import-x/resolver-next': [
createTypeScriptImportResolver({
alwaysTryTypes: true,
// Omitted 'project' (defaults to root tsconfig.json)
// OR explicitly set to: project: "tsconfig.json"
})
]
}
```
**WORKING CONFIG (The "Discouraged" workaround):**
```javascript
settings: {
'import-x/resolver-next': [
createTypeScriptImportResolver({
alwaysTryTypes: true,
// Explicitly listing the referenced projects works
project: [
'tsconfig.app.json',
'tsconfig.node.json'
]
})
]
}
```
### Actual Behavior
When using the Failing Config, imports using aliases throw:
`import-x/no-unresolved: Unable to resolve path to module '@components/StateButton'`
### Expected Behavior
The resolver should detect that `tsconfig.json` uses `references`, parse the referenced configuration files (`tsconfig.app.json`), and resolve the `paths` aliases defined inside them without needing to manually list every project file in the ESLint settings.
3 条评论