diff --git a/.changeset/warm-moose-argue.md b/.changeset/warm-moose-argue.md new file mode 100644 index 000000000000..421b180247dd --- /dev/null +++ b/.changeset/warm-moose-argue.md @@ -0,0 +1,5 @@ +--- +'svelte-migrate': patch +--- + +fix: prompt SvelteKit 2 migration during Svelte 5 migration if necessary diff --git a/packages/migrate/migrations/svelte-5/index.js b/packages/migrate/migrations/svelte-5/index.js index 9ad902b6f837..4764771f8977 100644 --- a/packages/migrate/migrations/svelte-5/index.js +++ b/packages/migrate/migrations/svelte-5/index.js @@ -10,6 +10,7 @@ import semver from 'semver'; import glob from 'tiny-glob/sync.js'; import { bail, check_git, update_js_file, update_svelte_file } from '../../utils.js'; import { migrate as migrate_svelte_4 } from '../svelte-4/index.js'; +import { migrate as migrate_sveltekit_2 } from '../sveltekit-2/index.js'; import { transform_module_code, transform_svelte_code, update_pkg_json } from './migrate.js'; export async function migrate() { @@ -22,19 +23,20 @@ export async function migrate() { ); const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8')); + const svelte_dep = pkg.devDependencies?.svelte ?? pkg.dependencies?.svelte; if (svelte_dep && semver.validRange(svelte_dep) && semver.gtr('4.0.0', svelte_dep)) { console.log( colors .bold() .yellow( - '\nDetected Svelte 3. We recommend running the `svelte-4` migration first (`npx svelte-migrate svelte-4`).\n' + '\nDetected Svelte 3. You need to upgrade to Svelte version 4 first (`npx svelte-migrate svelte-4`).\n' ) ); const response = await prompts({ type: 'confirm', name: 'value', - message: 'Run `svelte-4` migration now?', + message: 'Run svelte-4 migration now?', initial: false }); if (!response.value) { @@ -42,17 +44,43 @@ export async function migrate() { } else { await migrate_svelte_4(); console.log( - colors.bold().green('`svelte-4` migration complete. Continue with `svelte-5` migration?\n') + colors + .bold() + .green( + 'svelte-4 migration complete. Check that everything is ok, then run `npx svelte-migrate svelte-5` again to continue the Svelte 5 migration.\n' + ) ); - const response = await prompts({ - type: 'confirm', - name: 'value', - message: 'Continue?', - initial: false - }); - if (!response.value) { - process.exit(1); - } + process.exit(0); + } + } + + const kit_dep = pkg.devDependencies?.['@sveltejs/kit'] ?? pkg.dependencies?.['@sveltejs/kit']; + if (kit_dep && semver.validRange(kit_dep) && semver.gtr('2.0.0', kit_dep)) { + console.log( + colors + .bold() + .yellow( + '\nDetected SvelteKit 1. You need to upgrade to SvelteKit version 2 first (`npx svelte-migrate sveltekit-2`).\n' + ) + ); + const response = await prompts({ + type: 'confirm', + name: 'value', + message: 'Run sveltekit-2 migration now?', + initial: false + }); + if (!response.value) { + process.exit(1); + } else { + await migrate_sveltekit_2(); + console.log( + colors + .bold() + .green( + 'sveltekit-2 migration complete. Check that everything is ok, then run `npx svelte-migrate svelte-5` again to continue the Svelte 5 migration.\n' + ) + ); + process.exit(0); } }