-
-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conditional configuration in vite.config.js breaks prod build #5372
Comments
The second argument |
Actually, @benmccann is there a reason that |
This is what I have right now, and it seems to be working okay so far. diff --git a/packages/kit/src/vite/build/build_server.js b/packages/kit/src/vite/build/build_server.js
index f5b56ab3..cac9f04a 100644
--- a/packages/kit/src/vite/build/build_server.js
+++ b/packages/kit/src/vite/build/build_server.js
@@ -1,7 +1,7 @@
import fs from 'fs';
import path from 'path';
import { mkdirp, posixify } from '../../utils/filesystem.js';
-import { get_vite_config, merge_vite_configs, resolve_entry } from '../utils.js';
+import { merge_vite_configs, resolve_entry } from '../utils.js';
import { load_template } from '../../core/config/index.js';
import { get_runtime_path } from '../../core/utils.js';
import { create_build, find_deps, get_default_config, remove_svelte_kit } from './utils.js';
@@ -107,6 +107,7 @@ export class Server {
* @param {{
* cwd: string;
* config: import('types').ValidatedConfig
+ * vite_config: import('vite').UserConfig
* manifest_data: import('types').ManifestData
* build_dir: string;
* output_dir: string;
@@ -115,7 +116,7 @@ export class Server {
* @param {{ vite_manifest: import('vite').Manifest, assets: import('rollup').OutputAsset[] }} client
*/
export async function build_server(options, client) {
- const { cwd, config, manifest_data, build_dir, output_dir, service_worker_entry_file } = options;
+ const { cwd, config, vite_config, manifest_data, build_dir, output_dir, service_worker_entry_file } = options;
let hooks_file = resolve_entry(config.kit.files.hooks);
if (!hooks_file || !fs.existsSync(hooks_file)) {
@@ -174,8 +175,6 @@ export async function build_server(options, client) {
})
);
- const vite_config = await get_vite_config();
-
const merged_config = merge_vite_configs(
get_default_config({ config, input, ssr: true, outDir: `${output_dir}/server` }),
vite_config
diff --git a/packages/kit/src/vite/build/build_service_worker.js b/packages/kit/src/vite/build/build_service_worker.js
index 747f3696..cb1f293a 100644
--- a/packages/kit/src/vite/build/build_service_worker.js
+++ b/packages/kit/src/vite/build/build_service_worker.js
@@ -1,13 +1,14 @@
import fs from 'fs';
import * as vite from 'vite';
import { s } from '../../utils/misc.js';
-import { get_vite_config, merge_vite_configs } from '../utils.js';
+import { merge_vite_configs } from '../utils.js';
import { normalize_path } from '../../utils/url.js';
import { assets_base, remove_svelte_kit } from './utils.js';
/**
* @param {{
* config: import('types').ValidatedConfig;
+ * vite_config: import('vite').UserConfig;
* manifest_data: import('types').ManifestData;
* output_dir: string;
* service_worker_entry_file: string | null;
@@ -65,7 +66,6 @@ export async function build_service_worker(
.trim()
);
- const vite_config = await get_vite_config();
const merged_config = merge_vite_configs(vite_config, {
base: assets_base(config.kit),
build: {
diff --git a/packages/kit/src/vite/index.js b/packages/kit/src/vite/index.js
index 760c0feb..3c17edf5 100644
--- a/packages/kit/src/vite/index.js
+++ b/packages/kit/src/vite/index.js
@@ -233,6 +233,7 @@ function kit() {
const options = {
cwd,
config: svelte_config,
+ vite_config,
build_dir: paths.build_dir, // TODO just pass `paths`
manifest_data,
output_dir: paths.output_dir,
diff --git a/packages/kit/src/vite/utils.js b/packages/kit/src/vite/utils.js
index 08c440ce..4e507ef5 100644
--- a/packages/kit/src/vite/utils.js
+++ b/packages/kit/src/vite/utils.js
@@ -1,21 +1,7 @@
import fs from 'fs';
import path from 'path';
-import { pathToFileURL } from 'url';
import { get_runtime_path } from '../core/utils.js';
-/**
- * @return {Promise<import('vite').UserConfig>}
- */
-export async function get_vite_config() {
- for (const file of ['vite.config.js', 'vite.config.mjs', 'vite.config.cjs']) {
- if (fs.existsSync(file)) {
- const config = await import(pathToFileURL(file).toString());
- return config.default || config;
- }
- }
- throw new Error('Could not find vite.config.js');
-}
-
/**
* @param {...import('vite').UserConfig} configs
* @returns {import('vite').UserConfig} |
Sadly not. An older version did that, which led to issues. See #5308 |
Bummer. All right, I've opened a PR that keeps the |
* fix loading of conditional Vite configs (#5372) * add changeset * use loadConfigFromFile to load Vite config * Update .changeset/poor-knives-yawn.md Co-authored-by: Rich Harris <[email protected]> Co-authored-by: Rich Harris <[email protected]>
Describe the bug
If your
vite.config.js
uses conditional configuration, Svelte stops trying to compile components files to JS during SSR, and the resulting build fails because Rollup/Acorn is trying to parse Svelte files as JS.Reproduction
https://stackblitz.com/edit/sveltejs-kit-template-default-4wrfgp
Logs
System Info
Severity
blocking an upgrade
Additional Information
No response
The text was updated successfully, but these errors were encountered: