diff --git a/.changeset/sour-wings-taste.md b/.changeset/sour-wings-taste.md new file mode 100644 index 000000000..1d71ba9f7 --- /dev/null +++ b/.changeset/sour-wings-taste.md @@ -0,0 +1,5 @@ +--- +'sv': patch +--- + +fix(cli): `vite.config.*` file detection works for both .js and .ts variants diff --git a/packages/addons/devtools-json/index.ts b/packages/addons/devtools-json/index.ts index 4198ba47c..625497d6b 100644 --- a/packages/addons/devtools-json/index.ts +++ b/packages/addons/devtools-json/index.ts @@ -8,13 +8,11 @@ export default defineAddon({ homepage: 'https://github.com/ChromeDevTools/vite-plugin-devtools-json', options: {}, - run: ({ sv, typescript }) => { - const ext = typescript ? 'ts' : 'js'; - + run: ({ sv, viteConfigFile }) => { sv.devDependency('vite-plugin-devtools-json', '^1.0.0'); // add the vite plugin - sv.file(`vite.config.${ext}`, (content) => { + sv.file(viteConfigFile, (content) => { const { ast, generateCode } = parseScript(content); const vitePluginName = 'devtoolsJson'; diff --git a/packages/addons/paraglide/index.ts b/packages/addons/paraglide/index.ts index c432244d9..0809a0a36 100644 --- a/packages/addons/paraglide/index.ts +++ b/packages/addons/paraglide/index.ts @@ -55,7 +55,7 @@ export default defineAddon({ setup: ({ kit, unsupported }) => { if (!kit) unsupported('Requires SvelteKit'); }, - run: ({ sv, options, typescript, kit }) => { + run: ({ sv, options, viteConfigFile, typescript, kit }) => { const ext = typescript ? 'ts' : 'js'; if (!kit) throw new Error('SvelteKit is required'); @@ -81,7 +81,7 @@ export default defineAddon({ }); // add the vite plugin - sv.file(`vite.config.${ext}`, (content) => { + sv.file(viteConfigFile, (content) => { const { ast, generateCode } = parseScript(content); const vitePluginName = 'paraglideVitePlugin'; diff --git a/packages/addons/tailwindcss/index.ts b/packages/addons/tailwindcss/index.ts index 78dee7358..614a15b65 100644 --- a/packages/addons/tailwindcss/index.ts +++ b/packages/addons/tailwindcss/index.ts @@ -41,8 +41,7 @@ export default defineAddon({ shortDescription: 'css framework', homepage: 'https://tailwindcss.com', options, - run: ({ sv, options, typescript, kit, dependencyVersion }) => { - const ext = typescript ? 'ts' : 'js'; + run: ({ sv, options, viteConfigFile, typescript, kit, dependencyVersion }) => { const prettierInstalled = Boolean(dependencyVersion('prettier')); sv.devDependency('tailwindcss', '^4.0.0'); @@ -57,7 +56,7 @@ export default defineAddon({ } // add the vite plugin - sv.file(`vite.config.${ext}`, (content) => { + sv.file(viteConfigFile, (content) => { const { ast, generateCode } = parseScript(content); const vitePluginName = 'tailwindcss'; diff --git a/packages/addons/vitest-addon/index.ts b/packages/addons/vitest-addon/index.ts index 57e6c0763..895d4e051 100644 --- a/packages/addons/vitest-addon/index.ts +++ b/packages/addons/vitest-addon/index.ts @@ -20,7 +20,7 @@ export default defineAddon({ shortDescription: 'unit testing', homepage: 'https://vitest.dev', options, - run: ({ sv, typescript, kit, options }) => { + run: ({ sv, viteConfigFile, typescript, kit, options }) => { const ext = typescript ? 'ts' : 'js'; const unitTesting = options.usages.includes('unit'); const componentTesting = options.usages.includes('component'); @@ -96,11 +96,11 @@ export default defineAddon({ `; }); } - sv.file(`vite.config.${ext}`, (content) => { + sv.file(viteConfigFile, (content) => { const { ast, generateCode } = parseScript(content); const clientObjectExpression = object.create({ - extends: `./vite.config.${ext}`, + extends: `./${viteConfigFile}`, test: { name: 'client', environment: 'browser', @@ -116,7 +116,7 @@ export default defineAddon({ }); const serverObjectExpression = object.create({ - extends: `./vite.config.${ext}`, + extends: `./${viteConfigFile}`, test: { name: 'server', environment: 'node', diff --git a/packages/cli/commands/add/utils.ts b/packages/cli/commands/add/utils.ts index 2c2900c53..b76a8f015 100644 --- a/packages/cli/commands/add/utils.ts +++ b/packages/cli/commands/add/utils.ts @@ -111,6 +111,7 @@ export const commonFilePaths = { packageJson: 'package.json', svelteConfig: 'svelte.config.js', tsconfig: 'tsconfig.json', + viteConfig: 'vite.config.js', viteConfigTS: 'vite.config.ts' } as const; diff --git a/packages/cli/commands/add/workspace.ts b/packages/cli/commands/add/workspace.ts index 480db5b9f..468e86d20 100644 --- a/packages/cli/commands/add/workspace.ts +++ b/packages/cli/commands/add/workspace.ts @@ -23,6 +23,8 @@ export async function createWorkspace({ const viteConfigPath = path.join(resolvedCwd, commonFilePaths.viteConfigTS); let usesTypescript = fs.existsSync(viteConfigPath); + const viteConfigFile = usesTypescript ? commonFilePaths.viteConfigTS : commonFilePaths.viteConfig; + if (TESTING) { // while executing tests, we only look into the direct `cwd` // as we might detect the monorepo `tsconfig.json` otherwise. @@ -55,6 +57,7 @@ export async function createWorkspace({ options, packageManager: packageManager ?? (await detect({ cwd }))?.name ?? getUserAgent() ?? 'npm', typescript: usesTypescript, + viteConfigFile, kit: dependencies['@sveltejs/kit'] ? parseKitOptions(resolvedCwd) : undefined, dependencyVersion: (pkg) => dependencies[pkg] }; diff --git a/packages/core/addon/workspace.ts b/packages/core/addon/workspace.ts index a6525d44b..4fa43ffb0 100644 --- a/packages/core/addon/workspace.ts +++ b/packages/core/addon/workspace.ts @@ -13,6 +13,7 @@ export type Workspace = { */ dependencyVersion: (pkg: string) => string | undefined; typescript: boolean; + viteConfigFile: string; kit: { libDirectory: string; routesDirectory: string } | undefined; packageManager: PackageManager; };