Skip to content

Commit 4f3c1d9

Browse files
committedFeb 7, 2025
fix: support non-hoisted dts type, fix #539
1 parent 67c0601 commit 4f3c1d9

File tree

2 files changed

+23
-22
lines changed

2 files changed

+23
-22
lines changed
 

‎packages/module/src/modules/config/generate.ts

+21
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,29 @@ export async function generateESLintConfig(
128128
'export default withNuxt',
129129
].join('\n')
130130

131+
const [
132+
pathToFlatConfigUtils,
133+
pathToESLintConfigFlat,
134+
] = await Promise.all([
135+
r.resolvePath('eslint-flat-config-utils').then(r => relativeWithDot(r)),
136+
r.resolvePath('@nuxt/eslint-config/flat').then(r => relativeWithDot(r)),
137+
])
138+
139+
const codeDts = [
140+
'import type { FlatConfigComposer } from ' + JSON.stringify(pathToFlatConfigUtils),
141+
'import { defineFlatConfigs } from ' + JSON.stringify(pathToESLintConfigFlat),
142+
'import type { NuxtESLintConfigOptionsResolved } from ' + JSON.stringify(pathToESLintConfigFlat),
143+
'',
144+
'declare const configs: FlatConfigComposer',
145+
'declare const options: NuxtESLintConfigOptionsResolved',
146+
'declare const withNuxt: typeof defineFlatConfigs',
147+
'export default withNuxt',
148+
'export { withNuxt, defineFlatConfigs, configs, options }',
149+
].join('\n')
150+
131151
return {
132152
code,
153+
codeDts,
133154
configFile,
134155
}
135156
}

‎packages/module/src/modules/config/index.ts

+2-22
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { dirname } from 'node:path'
22
import fs from 'node:fs/promises'
3-
import { addTemplate } from '@nuxt/kit'
43
import type { Nuxt } from '@nuxt/schema'
54
import type { ESLintConfigGenAddon } from '../../types'
65
import type { ModuleOptions } from '../../module'
@@ -9,18 +8,6 @@ import { setupDevToolsIntegration } from './devtools'
98
import { initRootESLintConfig } from './init'
109
import { generateESLintConfig } from './generate'
1110

12-
const ESLINT_CONFIG_DTS = [
13-
'import type { FlatConfigComposer } from "eslint-flat-config-utils"',
14-
'import { defineFlatConfigs } from "@nuxt/eslint-config/flat"',
15-
'import type { NuxtESLintConfigOptionsResolved } from "@nuxt/eslint-config/flat"',
16-
'',
17-
'declare const configs: FlatConfigComposer',
18-
'declare const options: NuxtESLintConfigOptionsResolved',
19-
'declare const withNuxt: typeof defineFlatConfigs',
20-
'export default withNuxt',
21-
'export { withNuxt, defineFlatConfigs, configs, options }',
22-
].join('\n')
23-
2411
export async function setupConfigGen(options: ModuleOptions, nuxt: Nuxt) {
2512
const {
2613
autoInit = true,
@@ -41,20 +28,13 @@ export async function setupConfigGen(options: ModuleOptions, nuxt: Nuxt) {
4128
...defaultAddons,
4229
]
4330
await nuxt.callHook('eslint:config:addons', addons)
44-
const { code, configFile } = await generateESLintConfig(options, nuxt, addons)
31+
const { code, codeDts, configFile } = await generateESLintConfig(options, nuxt, addons)
4532
await fs.mkdir(dirname(configFile), { recursive: true })
4633
await fs.writeFile(configFile, code, 'utf-8')
34+
await fs.writeFile(configFile.replace(/\.mjs$/, '.d.mts'), codeDts, 'utf-8')
4735
_configFile = configFile
4836
}
4937

50-
addTemplate({
51-
filename: 'eslint.config.d.mts',
52-
write: true,
53-
getContents() {
54-
return ESLINT_CONFIG_DTS
55-
},
56-
})
57-
5838
setupDevToolsIntegration(options, nuxt)
5939

6040
await writeConfigFile()

0 commit comments

Comments
 (0)
Please sign in to comment.