Skip to content

Commit 08ebcb5

Browse files
authored
Support esm config files (#936)
1 parent 9e67505 commit 08ebcb5

File tree

7 files changed

+28
-12
lines changed

7 files changed

+28
-12
lines changed

.changeset/violet-spies-play.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/kit': patch
3+
---
4+
5+
Add esm config support

packages/kit/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
"vite": "^2.2.3"
3636
},
3737
"peerDependencies": {
38-
"svelte": "^3.32.1",
38+
"svelte": "^3.34.0",
3939
"vite": "^2.2.3"
4040
},
4141
"bin": {

packages/kit/src/cli.js

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,11 @@ async function get_config() {
2626

2727
if (
2828
error.code === 'MODULE_NOT_FOUND' &&
29-
/Cannot find module svelte\.config\.cjs/.test(error.message)
29+
/Cannot find module svelte\.config\./.test(error.message)
3030
) {
31-
if (existsSync('svelte.config.js')) {
32-
// TODO this is temporary, for the benefit of early adopters
33-
message = 'You must rename svelte.config.js to svelte.config.cjs';
34-
} else {
35-
message = 'Missing svelte.config.cjs';
36-
}
31+
message = 'Missing svelte.config.js';
3732
} else if (error.name === 'SyntaxError') {
38-
message = 'Malformed svelte.config.cjs';
33+
message = 'Malformed svelte.config.js';
3934
}
4035

4136
console.error(colors.bold().red(message));

packages/kit/src/core/load_config/index.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import options from './options.js';
22
import * as url from 'url';
33
import path from 'path';
4+
import fs from 'fs';
45
import { resolve_entry } from '../utils.js';
56

67
/** @typedef {import('./types').ConfigDefinition} ConfigDefinition */
@@ -81,7 +82,10 @@ function remove_trailing_slash(str) {
8182
}
8283

8384
export async function load_config({ cwd = process.cwd() } = {}) {
84-
const config_file = path.join(cwd, 'svelte.config.cjs');
85+
const config_file_esm = path.join(cwd, 'svelte.config.js');
86+
const config_file = fs.existsSync(config_file_esm)
87+
? config_file_esm
88+
: path.join(cwd, 'svelte.config.cjs');
8589
const config = await import(url.pathToFileURL(config_file).href);
8690
const validated = validate_config(config.default);
8791

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default {};

packages/kit/src/core/load_config/test/index.js

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,11 @@ import { load_config } from '../index.js';
77
const __filename = fileURLToPath(import.meta.url);
88
const __dirname = join(__filename, '..');
99

10-
test('load default config', async () => {
11-
const cwd = join(__dirname, 'fixtures');
10+
/**
11+
* @param {string} path
12+
*/
13+
async function testLoadDefaultConfig(path) {
14+
const cwd = join(__dirname, 'fixtures', path);
1215

1316
const config = await load_config({ cwd });
1417

@@ -42,6 +45,14 @@ test('load default config', async () => {
4245
},
4346
preprocess: null
4447
});
48+
}
49+
50+
test('load default config (cjs)', async () => {
51+
await testLoadDefaultConfig('default-cjs');
52+
});
53+
54+
test('load default config (esm)', async () => {
55+
await testLoadDefaultConfig('default-esm');
4556
});
4657

4758
test.run();

0 commit comments

Comments
 (0)