Skip to content

Commit

Permalink
fix: try fix windows path resolution
Browse files Browse the repository at this point in the history
  • Loading branch information
antfu committed Mar 28, 2024
1 parent e30793f commit 018b785
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 30 deletions.
2 changes: 1 addition & 1 deletion packages/eslint-config/package.json
Expand Up @@ -33,7 +33,7 @@
"@stylistic/eslint-plugin": "^1.7.0",
"@typescript-eslint/eslint-plugin": "^7.4.0",
"@typescript-eslint/parser": "^7.4.0",
"eslint-flat-config-utils": "^0.1.0",
"eslint-flat-config-utils": "^0.1.2",
"eslint-plugin-vue": "^9.24.0",
"globals": "^15.0.0",
"pathe": "^1.1.2",
Expand Down
11 changes: 7 additions & 4 deletions packages/eslint-config/src/flat/index.ts
@@ -1,12 +1,13 @@
import type { Awaitable, NuxtESLintConfigOptions } from './types'
import type { NuxtESLintConfigOptions } from './types'
import disables from './configs/disables'
import nuxt from './configs/nuxt'
import base from './configs/base'
import javascript from './configs/javascript'
import typescript from './configs/typescript'
import vue from './configs/vue'
import stylistic from './configs/stylistic'
import type { FlatConfigPipeline, FlatConfigItem } from 'eslint-flat-config-utils'
import type { FlatConfigItem, ResolvableFlatConfig } from 'eslint-flat-config-utils'
import { FlatConfigPipeline } from 'eslint-flat-config-utils'
import { pipe } from 'eslint-flat-config-utils'

export * from './types'
Expand All @@ -17,8 +18,10 @@ export * from './types'
* This function takes flat config item, or an array of them as rest arguments.
* It also automatically resolves the promise if the config item is a promise.
*/
export function defineFlatConfigs(...configs: Awaitable<FlatConfigItem | FlatConfigItem[]>[]): FlatConfigPipeline<FlatConfigItem> {
return pipe(...configs)
export function defineFlatConfigs(
...configs: ResolvableFlatConfig[]
): FlatConfigPipeline<FlatConfigItem> {
return new FlatConfigPipeline().append(...configs)
}

/**
Expand Down
6 changes: 3 additions & 3 deletions packages/module/package.json
Expand Up @@ -43,15 +43,15 @@
}
},
"dependencies": {
"@nuxt/devtools-kit": "^1.1.4",
"@nuxt/devtools-kit": "^1.1.5",
"@nuxt/eslint-config": "workspace:*",
"@nuxt/eslint-plugin": "workspace:*",
"@nuxt/kit": "^3.11.1",
"chokidar": "^3.6.0",
"eslint-flat-config-utils": "^0.1.0",
"eslint-flat-config-utils": "^0.1.2",
"eslint-flat-config-viewer": "^0.1.14",
"eslint-typegen": "^0.1.5",
"get-port-please": "^3.1.2",
"eslint-typegen": "^0.1.4",
"pathe": "^1.1.2",
"unimport": "^3.7.1"
},
Expand Down
28 changes: 20 additions & 8 deletions packages/module/src/modules/config.ts
@@ -1,4 +1,4 @@
import { addTemplate, resolvePath } from '@nuxt/kit'
import { addTemplate, tryResolveModule } from '@nuxt/kit'
import { stringifyImports } from 'unimport'
import type { Import } from 'unimport'
import type { Nuxt } from '@nuxt/schema'
Expand All @@ -8,6 +8,7 @@ import type { ESLintConfigGenAddon } from '../types'
import type { NuxtESLintConfigOptions } from '@nuxt/eslint-config/flat'
import type { ConfigGenOptions, ModuleOptions } from '../module'
import { createAddonGlobals } from '../config-addons/globals'
import { isAbsolute } from 'path'

export async function setupConfigGen(options: ModuleOptions, nuxt: Nuxt) {
const defaultAddons = [
Expand Down Expand Up @@ -57,24 +58,22 @@ async function generateESLintConfig(options: ModuleOptions, nuxt: Nuxt, addons:
...typeof options.config !== 'boolean' ? options.config || {} : {},
}

const flatConfigEntry = await resolvePath('@nuxt/eslint-config/flat', { cwd: import.meta.url })

importLines.push(
{
from: await resolvePath('eslint-flat-config-utils', { cwd: import.meta.url }),
from: 'eslint-flat-config-utils',
name: 'pipe',
},
{
from: await resolvePath('eslint-typegen', { cwd: import.meta.url }),
from: 'eslint-typegen',
name: 'default',
as: 'typegen',
},
{
from: flatConfigEntry,
from: '@nuxt/eslint-config/flat',
name: 'createConfigForNuxt',
},
{
from: flatConfigEntry,
from: '@nuxt/eslint-config/flat',
name: 'defineFlatConfigs',
},
)
Expand All @@ -97,11 +96,24 @@ async function generateESLintConfig(options: ModuleOptions, nuxt: Nuxt, addons:
configItems.push(...resolved.configs)
}

async function resolveModule(id: string) {
if (id && (id.includes('://') || isAbsolute(id)))
return id
return await tryResolveModule(id, import.meta.url) || id
}

const imports = await Promise.all(importLines.map(async (line): Promise<Import> => {
return {
...line,
from: await resolveModule(line.from),
}
}))

return [
'// ESLint config generated by Nuxt',
'/// <reference path="./eslint-typegen.d.ts" />',
'',
stringifyImports(importLines, false),
stringifyImports(imports, false),
'',
'export { defineFlatConfigs }',
'',
Expand Down
28 changes: 14 additions & 14 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 018b785

Please sign in to comment.