0
# Utility Functions
1
2
Core utility function for configuration resolution and normalization used in the ESLint configuration system.
3
4
## Capabilities
5
6
### Configuration Resolution
7
8
Function for resolving and normalizing configuration options with intelligent defaults.
9
10
```typescript { .api }
11
/**
12
* Resolve and normalize configuration options with intelligent defaults.
13
* Applies default values for directories and features based on project structure.
14
*
15
* @param config - Configuration options to resolve
16
* @returns Resolved configuration with all defaults applied
17
*/
18
function resolveOptions(config: NuxtESLintConfigOptions): NuxtESLintConfigOptionsResolved;
19
20
interface NuxtESLintConfigOptionsResolved {
21
features: Required<NotNill<NuxtESLintFeaturesOptions>>;
22
dirs: Required<NotNill<DirectoriesConfig>>;
23
}
24
```
25
26
**Usage Examples:**
27
28
```typescript
29
import { resolveOptions } from "@nuxt/eslint-config";
30
31
// Basic resolution with defaults
32
const resolved = resolveOptions({});
33
console.log(resolved.features.typescript); // true if TypeScript is installed
34
console.log(resolved.dirs.root); // ['.', './app']
35
36
// Partial configuration resolution
37
const resolved2 = resolveOptions({
38
features: {
39
stylistic: true
40
},
41
dirs: {
42
src: ["./src"]
43
}
44
});
45
// All other features get defaults, directories are computed from src
46
47
// The function automatically:
48
// - Detects TypeScript availability using package detection
49
// - Sets up directory patterns based on src/root configuration
50
// - Applies Nuxt 3/4 conventions for project structure
51
// - Merges user options with intelligent defaults
52
```
53
54
### Default Resolution Logic
55
56
Understanding how the utility function applies defaults and resolves configurations.
57
58
The `resolveOptions` function follows this resolution strategy:
59
60
1. **Directory Resolution**: Establishes directory structure with Nuxt conventions
61
- `root`: Defaults to `['.', './app']` (supports both Nuxt 3 and 4)
62
- `src`: Defaults to same as `root`
63
- `pages`, `layouts`, `components`, etc.: Computed from `src` directories
64
65
2. **Feature Detection**: Auto-detects capabilities and applies defaults
66
- `typescript`: Automatically enabled if TypeScript package is detected
67
- `standalone`: Enabled by default for complete configuration
68
- `stylistic`, `tooling`, `formatters`: Disabled by default
69
70
3. **Configuration Merging**: User-provided options override defaults while maintaining type safety
71
72
**Internal Resolution Process:**
73
74
```typescript
75
// Example of the resolution logic:
76
const resolvedConfig = resolveOptions({
77
features: { stylistic: true },
78
dirs: { root: ["./app"] }
79
});
80
81
// Results in:
82
// {
83
// features: {
84
// standalone: true,
85
// stylistic: true, // User provided
86
// typescript: true, // Auto-detected
87
// tooling: false, // Default
88
// formatters: false, // Default
89
// nuxt: {}, // Default
90
// import: {} // Default
91
// },
92
// dirs: {
93
// root: ["./app"], // User provided
94
// src: ["./app"], // Computed from root
95
// pages: ["./app/pages"], // Computed from src
96
// layouts: ["./app/layouts"], // Computed from src
97
// components: ["./app/components"], // Computed from src
98
// // ... other directories computed similarly
99
// }
100
// }
101
```