Skip to content

Commit 44ef5ed

Browse files
authored
fix: prompt SvelteKit 2 migration during Svelte 5 migration if necessary (#12748)
closes sveltejs/svelte#13462
1 parent 66dff3e commit 44ef5ed

File tree

2 files changed

+45
-12
lines changed

2 files changed

+45
-12
lines changed

.changeset/warm-moose-argue.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'svelte-migrate': patch
3+
---
4+
5+
fix: prompt SvelteKit 2 migration during Svelte 5 migration if necessary

packages/migrate/migrations/svelte-5/index.js

Lines changed: 40 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import semver from 'semver';
1010
import glob from 'tiny-glob/sync.js';
1111
import { bail, check_git, update_js_file, update_svelte_file } from '../../utils.js';
1212
import { migrate as migrate_svelte_4 } from '../svelte-4/index.js';
13+
import { migrate as migrate_sveltekit_2 } from '../sveltekit-2/index.js';
1314
import { transform_module_code, transform_svelte_code, update_pkg_json } from './migrate.js';
1415

1516
export async function migrate() {
@@ -22,37 +23,64 @@ export async function migrate() {
2223
);
2324

2425
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
26+
2527
const svelte_dep = pkg.devDependencies?.svelte ?? pkg.dependencies?.svelte;
2628
if (svelte_dep && semver.validRange(svelte_dep) && semver.gtr('4.0.0', svelte_dep)) {
2729
console.log(
2830
colors
2931
.bold()
3032
.yellow(
31-
'\nDetected Svelte 3. We recommend running the `svelte-4` migration first (`npx svelte-migrate svelte-4`).\n'
33+
'\nDetected Svelte 3. You need to upgrade to Svelte version 4 first (`npx svelte-migrate svelte-4`).\n'
3234
)
3335
);
3436
const response = await prompts({
3537
type: 'confirm',
3638
name: 'value',
37-
message: 'Run `svelte-4` migration now?',
39+
message: 'Run svelte-4 migration now?',
3840
initial: false
3941
});
4042
if (!response.value) {
4143
process.exit(1);
4244
} else {
4345
await migrate_svelte_4();
4446
console.log(
45-
colors.bold().green('`svelte-4` migration complete. Continue with `svelte-5` migration?\n')
47+
colors
48+
.bold()
49+
.green(
50+
'svelte-4 migration complete. Check that everything is ok, then run `npx svelte-migrate svelte-5` again to continue the Svelte 5 migration.\n'
51+
)
4652
);
47-
const response = await prompts({
48-
type: 'confirm',
49-
name: 'value',
50-
message: 'Continue?',
51-
initial: false
52-
});
53-
if (!response.value) {
54-
process.exit(1);
55-
}
53+
process.exit(0);
54+
}
55+
}
56+
57+
const kit_dep = pkg.devDependencies?.['@sveltejs/kit'] ?? pkg.dependencies?.['@sveltejs/kit'];
58+
if (kit_dep && semver.validRange(kit_dep) && semver.gtr('2.0.0', kit_dep)) {
59+
console.log(
60+
colors
61+
.bold()
62+
.yellow(
63+
'\nDetected SvelteKit 1. You need to upgrade to SvelteKit version 2 first (`npx svelte-migrate sveltekit-2`).\n'
64+
)
65+
);
66+
const response = await prompts({
67+
type: 'confirm',
68+
name: 'value',
69+
message: 'Run sveltekit-2 migration now?',
70+
initial: false
71+
});
72+
if (!response.value) {
73+
process.exit(1);
74+
} else {
75+
await migrate_sveltekit_2();
76+
console.log(
77+
colors
78+
.bold()
79+
.green(
80+
'sveltekit-2 migration complete. Check that everything is ok, then run `npx svelte-migrate svelte-5` again to continue the Svelte 5 migration.\n'
81+
)
82+
);
83+
process.exit(0);
5684
}
5785
}
5886

0 commit comments

Comments
 (0)