From fd9b743f4cd0bce4486b88f45f0a678b48b95721 Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Fri, 4 Oct 2024 15:21:44 +0200 Subject: [PATCH 1/2] fix: prompt SvelteKit 2 migration during Svelte 5 migration if necessary closes https://github.com/sveltejs/svelte/issues/13462 --- .changeset/warm-moose-argue.md | 5 +++ packages/migrate/migrations/svelte-5/index.js | 38 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 .changeset/warm-moose-argue.md 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..b540767a255e 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,6 +23,7 @@ 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( @@ -56,6 +58,42 @@ export async function migrate() { } } + 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. Continue with `svelte-5` migration?\n') + ); + const response = await prompts({ + type: 'confirm', + name: 'value', + message: 'Continue?', + initial: false + }); + if (!response.value) { + process.exit(1); + } + } + } + let migrate; try { try { From 5fcde5d629fde18914bbf1f480319608ac05ff0f Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Sat, 5 Oct 2024 14:11:40 +0200 Subject: [PATCH 2/2] remove backticks, always abort --- packages/migrate/migrations/svelte-5/index.js | 36 +++++++------------ 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/packages/migrate/migrations/svelte-5/index.js b/packages/migrate/migrations/svelte-5/index.js index b540767a255e..4764771f8977 100644 --- a/packages/migrate/migrations/svelte-5/index.js +++ b/packages/migrate/migrations/svelte-5/index.js @@ -30,13 +30,13 @@ export async function migrate() { 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) { @@ -44,17 +44,13 @@ 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); } } @@ -70,7 +66,7 @@ export async function migrate() { const response = await prompts({ type: 'confirm', name: 'value', - message: 'Run `sveltekit-2` migration now?', + message: 'Run sveltekit-2 migration now?', initial: false }); if (!response.value) { @@ -80,17 +76,11 @@ export async function migrate() { console.log( colors .bold() - .green('`sveltekit-2` migration complete. Continue with `svelte-5` migration?\n') + .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' + ) ); - const response = await prompts({ - type: 'confirm', - name: 'value', - message: 'Continue?', - initial: false - }); - if (!response.value) { - process.exit(1); - } + process.exit(0); } }