diff --git a/package.json b/package.json index 03bea74..f44ad31 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,8 @@ "pathe": "^1.1.2", "perfect-debounce": "^1.0.0", "pkg-types": "^1.2.1", - "rc9": "^2.1.2" + "rc9": "^2.1.2", + "tinyglobby": "^0.2.10" }, "devDependencies": { "@types/node": "^22.10.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 10f9cf9..684cab1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -44,6 +44,9 @@ importers: rc9: specifier: ^2.1.2 version: 2.1.2 + tinyglobby: + specifier: ^0.2.10 + version: 0.2.10 devDependencies: '@types/node': specifier: ^22.10.2 @@ -1368,6 +1371,14 @@ packages: picomatch: optional: true + fdir@6.4.2: + resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -2304,8 +2315,8 @@ packages: tinyexec@0.3.1: resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} - tinyglobby@0.2.9: - resolution: {integrity: sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==} + tinyglobby@0.2.10: + resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} engines: {node: '>=12.0.0'} tinypool@1.0.1: @@ -3795,7 +3806,7 @@ snapshots: optionalDependencies: picomatch: 2.3.1 - fdir@6.4.0(picomatch@4.0.2): + fdir@6.4.2(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -4156,7 +4167,7 @@ snapshots: postcss: 8.4.47 postcss-nested: 6.2.0(postcss@8.4.47) semver: 7.6.3 - tinyglobby: 0.2.9 + tinyglobby: 0.2.10 optionalDependencies: typescript: 5.7.2 @@ -4688,9 +4699,9 @@ snapshots: tinyexec@0.3.1: {} - tinyglobby@0.2.9: + tinyglobby@0.2.10: dependencies: - fdir: 6.4.0(picomatch@4.0.2) + fdir: 6.4.2(picomatch@4.0.2) picomatch: 4.0.2 tinypool@1.0.1: {} @@ -4755,7 +4766,7 @@ snapshots: rollup: 4.24.0 rollup-plugin-dts: 6.1.1(rollup@4.24.0)(typescript@5.7.2) scule: 1.3.0 - tinyglobby: 0.2.9 + tinyglobby: 0.2.10 ufo: 1.5.4 untyped: 1.5.0 optionalDependencies: diff --git a/src/loader.ts b/src/loader.ts index 37f825d..acca612 100644 --- a/src/loader.ts +++ b/src/loader.ts @@ -4,6 +4,7 @@ import { homedir } from "node:os"; import { resolve, extname, dirname, basename, join } from "pathe"; import { createJiti } from "jiti"; import { fileURLToPath } from "mlly"; +import { glob } from "tinyglobby"; import * as rc9 from "rc9"; import { defu } from "defu"; import { hash } from "ohash"; @@ -375,6 +376,19 @@ async function resolveConfig< tryResolve(resolve(cwd, ".config", source)) || source; + if (options.name) { + const globExtensions = `{${SUPPORTED_EXTENSIONS.map((e) => e.slice(1)).join(",")}}`; + const globPaths = await glob( + [ + `${options.name}?(.*).config.${globExtensions}`, + `.config/${options.name}?(.*)?(.config).${globExtensions}`, + `.config/${options.name}/**/*?(.*)?(.config).${globExtensions}`, + ], + { cwd }, + ); + console.log(globPaths.map((g) => resolve(cwd, g)), res.configFile, source); + } + if (!existsSync(res.configFile!)) { return res; } diff --git a/test/fixture/.config/test/colors/secondary.ts b/test/fixture/.config/test/colors/secondary.ts new file mode 100644 index 0000000..1643909 --- /dev/null +++ b/test/fixture/.config/test/colors/secondary.ts @@ -0,0 +1 @@ +export default "user_secondary";