1
+ import { createRequire } from 'module' ;
1
2
import path from 'path' ;
2
3
import fs from 'fs' ;
3
4
import { pathToFileURL } from 'url' ;
4
5
import { log } from './log' ;
5
6
import { Options } from './options' ;
6
7
import { UserConfig } from 'vite' ;
7
8
9
+ const _require = createRequire ( import . meta. url ) ;
10
+
8
11
export const knownSvelteConfigNames = [
9
12
'svelte.config.js' ,
10
13
'svelte.config.cjs' ,
@@ -27,7 +30,7 @@ export async function loadSvelteConfig(
27
30
if ( configFile ) {
28
31
let err ;
29
32
// try to use dynamic import for svelte.config.js first
30
- if ( configFile . endsWith ( '.js' ) || configFile . endsWith ( '.mjs' ) || configFile . endsWith ( '.cjs' ) ) {
33
+ if ( configFile . endsWith ( '.js' ) || configFile . endsWith ( '.mjs' ) ) {
31
34
try {
32
35
const result = await dynamicImportDefault ( pathToFileURL ( configFile ) . href ) ;
33
36
if ( result != null ) {
@@ -44,6 +47,27 @@ export async function loadSvelteConfig(
44
47
}
45
48
}
46
49
// cjs or error with dynamic import
50
+ if ( ! configFile . endsWith ( '.mjs' ) ) {
51
+ try {
52
+ // avoid loading cached version on reload
53
+ delete _require . cache [ _require . resolve ( configFile ) ] ;
54
+ const result = _require ( configFile ) ;
55
+ if ( result != null ) {
56
+ return {
57
+ ...result ,
58
+ configFile
59
+ } ;
60
+ } else {
61
+ throw new Error ( `invalid export in ${ configFile } ` ) ;
62
+ }
63
+ } catch ( e ) {
64
+ log . error ( `failed to require config ${ configFile } ` , e ) ;
65
+ if ( ! err ) {
66
+ err = e ;
67
+ }
68
+ }
69
+ }
70
+ // cjs but project is using `type: module`
47
71
if ( ! configFile . endsWith ( '.mjs' ) ) {
48
72
try {
49
73
// avoid loading cached version on reload
0 commit comments