Skip to content

Commit b714afd

Browse files
benmccannConduitry
andauthored
Use mtime as timestamp when loading config file (#356)
* Use mtime as timestamp when loading config file Co-authored-by: Conduitry <[email protected]> * Export loadSvelteConfig Co-authored-by: Conduitry <[email protected]>
1 parent 12c5a9b commit b714afd

File tree

4 files changed

+24
-8
lines changed

4 files changed

+24
-8
lines changed

.changeset/tidy-months-explode.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/vite-plugin-svelte': patch
3+
---
4+
5+
Use last modified time as cache busting parameter

.changeset/two-rice-end.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/vite-plugin-svelte': patch
3+
---
4+
5+
Export loadSvelteConfig

packages/vite-plugin-svelte/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,8 @@ export function svelte(inlineOptions?: Partial<Options>): Plugin[] {
218218
return plugins.filter(Boolean);
219219
}
220220

221+
export { loadSvelteConfig } from './utils/load-svelte-config';
222+
221223
export {
222224
Options,
223225
Preprocessor,

packages/vite-plugin-svelte/src/utils/load-svelte-config.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,15 @@ export const knownSvelteConfigNames = [
2222
// also use timestamp query to avoid caching on reload
2323
const dynamicImportDefault = new Function(
2424
'path',
25-
'return import(path + "?t=" + Date.now()).then(m => m.default)'
25+
'timestamp',
26+
'return import(path + "?t=" + timestamp).then(m => m.default)'
2627
);
2728

2829
export async function loadSvelteConfig(
29-
viteConfig: UserConfig,
30-
inlineOptions: Partial<Options>
30+
viteConfig?: UserConfig,
31+
inlineOptions?: Partial<Options>
3132
): Promise<Partial<Options> | undefined> {
32-
if (inlineOptions.configFile === false) {
33+
if (inlineOptions?.configFile === false) {
3334
return;
3435
}
3536
const configFile = findConfigToLoad(viteConfig, inlineOptions);
@@ -38,7 +39,10 @@ export async function loadSvelteConfig(
3839
// try to use dynamic import for svelte.config.js first
3940
if (configFile.endsWith('.js') || configFile.endsWith('.mjs')) {
4041
try {
41-
const result = await dynamicImportDefault(pathToFileURL(configFile).href);
42+
const result = await dynamicImportDefault(
43+
pathToFileURL(configFile).href,
44+
fs.statSync(configFile).mtimeMs
45+
);
4246
if (result != null) {
4347
return {
4448
...result,
@@ -83,9 +87,9 @@ export async function loadSvelteConfig(
8387
}
8488
}
8589

86-
function findConfigToLoad(viteConfig: UserConfig, inlineOptions: Partial<Options>) {
87-
const root = viteConfig.root || process.cwd();
88-
if (inlineOptions.configFile) {
90+
function findConfigToLoad(viteConfig?: UserConfig, inlineOptions?: Partial<Options>) {
91+
const root = viteConfig?.root || process.cwd();
92+
if (inlineOptions?.configFile) {
8993
const abolutePath = path.isAbsolute(inlineOptions.configFile)
9094
? inlineOptions.configFile
9195
: path.resolve(root, inlineOptions.configFile);

0 commit comments

Comments
 (0)