diff --git a/.changeset/shy-islands-hammer.md b/.changeset/shy-islands-hammer.md new file mode 100644 index 000000000000..dda4c69a9ef1 --- /dev/null +++ b/.changeset/shy-islands-hammer.md @@ -0,0 +1,5 @@ +--- +'create-svelte': minor +--- + +feat: add option to try out Svelte 5 beta diff --git a/packages/create-svelte/bin.js b/packages/create-svelte/bin.js index fa5fc87cfb84..79f5f1106e5b 100755 --- a/packages/create-svelte/bin.js +++ b/packages/create-svelte/bin.js @@ -97,6 +97,10 @@ const options = await p.group( { value: 'vitest', label: 'Add Vitest for unit testing' + }, + { + value: 'svelte5', + label: 'Try out Svelte 5 beta' } ] }) @@ -111,7 +115,8 @@ await create(cwd, { prettier: options.features.includes('prettier'), eslint: options.features.includes('eslint'), playwright: options.features.includes('playwright'), - vitest: options.features.includes('vitest') + vitest: options.features.includes('vitest'), + svelte5: options.features.includes('svelte5') }); p.outro('Your project is ready!'); diff --git a/packages/create-svelte/index.js b/packages/create-svelte/index.js index 74eab9b63e8d..b247b73a1fbb 100755 --- a/packages/create-svelte/index.js +++ b/packages/create-svelte/index.js @@ -84,7 +84,7 @@ function matches_condition(condition, options) { if (condition === 'typescript' || condition === 'checkjs') { return options.types === condition; } - return options[condition]; + return !!options[condition]; } /** diff --git a/packages/create-svelte/scripts/build-templates.js b/packages/create-svelte/scripts/build-templates.js index b1181243e3e1..1371f78178f2 100644 --- a/packages/create-svelte/scripts/build-templates.js +++ b/packages/create-svelte/scripts/build-templates.js @@ -219,7 +219,7 @@ async function generate_shared() { if (file.startsWith('+') || file.startsWith('-')) { const [conditions, ...rest] = file.split(path.sep); - const pattern = /([+-])([a-z]+)/g; + const pattern = /([+-])([a-z0-9]+)/g; let match; while ((match = pattern.exec(conditions))) { const set = match[1] === '+' ? include : exclude; diff --git a/packages/create-svelte/scripts/update-template-repo-contents.js b/packages/create-svelte/scripts/update-template-repo-contents.js index 78ec904d6a66..ad2f1ad84156 100644 --- a/packages/create-svelte/scripts/update-template-repo-contents.js +++ b/packages/create-svelte/scripts/update-template-repo-contents.js @@ -20,7 +20,8 @@ await create(repo, { types: 'checkjs', prettier: true, playwright: false, - vitest: false + vitest: false, + svelte5: false }); // Remove the Sverdle from the template because it doesn't work within Stackblitz (cookies not set) diff --git a/packages/create-svelte/shared/+checkjs/package.json b/packages/create-svelte/shared/+checkjs/package.json index dd9befe46702..3d53777af116 100644 --- a/packages/create-svelte/shared/+checkjs/package.json +++ b/packages/create-svelte/shared/+checkjs/package.json @@ -5,6 +5,6 @@ }, "devDependencies": { "typescript": "^5.0.0", - "svelte-check": "^3.4.3" + "svelte-check": "^3.6.0" } } diff --git a/packages/create-svelte/shared/+svelte5/package.json b/packages/create-svelte/shared/+svelte5/package.json new file mode 100644 index 000000000000..5d2d0a1e9157 --- /dev/null +++ b/packages/create-svelte/shared/+svelte5/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "svelte": "^5.0.0-next.1" + } +} diff --git a/packages/create-svelte/shared/+typescript/package.json b/packages/create-svelte/shared/+typescript/package.json index f7fe142530a8..75e7e4e43170 100644 --- a/packages/create-svelte/shared/+typescript/package.json +++ b/packages/create-svelte/shared/+typescript/package.json @@ -6,6 +6,6 @@ "devDependencies": { "typescript": "^5.0.0", "tslib": "^2.4.1", - "svelte-check": "^3.4.3" + "svelte-check": "^3.6.0" } } diff --git a/packages/create-svelte/templates/default/package.template.json b/packages/create-svelte/templates/default/package.template.json index 6e96dfb86f88..4ba7dd38a4a9 100644 --- a/packages/create-svelte/templates/default/package.template.json +++ b/packages/create-svelte/templates/default/package.template.json @@ -10,7 +10,7 @@ "@fontsource/fira-mono": "^4.5.10", "@neoconfetti/svelte": "^1.0.0", "@sveltejs/adapter-auto": "^2.0.0", - "@sveltejs/kit": "^1.20.4", + "@sveltejs/kit": "^1.27.4", "svelte": "^4.0.5", "vite": "^4.4.2" }, diff --git a/packages/create-svelte/templates/skeleton/package.template.json b/packages/create-svelte/templates/skeleton/package.template.json index 427a2face111..b4fce4c835de 100644 --- a/packages/create-svelte/templates/skeleton/package.template.json +++ b/packages/create-svelte/templates/skeleton/package.template.json @@ -9,7 +9,7 @@ }, "devDependencies": { "@sveltejs/adapter-auto": "^2.0.0", - "@sveltejs/kit": "^1.20.4", + "@sveltejs/kit": "^1.27.4", "svelte": "^4.0.5", "vite": "^4.4.2" }, diff --git a/packages/create-svelte/templates/skeletonlib/package.template.json b/packages/create-svelte/templates/skeletonlib/package.template.json index ed466f930e43..0c3a0f84a3a6 100644 --- a/packages/create-svelte/templates/skeletonlib/package.template.json +++ b/packages/create-svelte/templates/skeletonlib/package.template.json @@ -20,7 +20,7 @@ }, "devDependencies": { "@sveltejs/adapter-auto": "^2.0.0", - "@sveltejs/kit": "^1.20.4", + "@sveltejs/kit": "^1.27.4", "@sveltejs/package": "^2.0.0", "publint": "^0.1.9", "svelte": "^4.0.5", diff --git a/packages/create-svelte/test/check.js b/packages/create-svelte/test/check.js index d910ee12e29a..91e5f3361713 100644 --- a/packages/create-svelte/test/check.js +++ b/packages/create-svelte/test/check.js @@ -115,7 +115,8 @@ for (const template of templates) { prettier: true, eslint: true, playwright: false, - vitest: false + vitest: false, + svelte5: false }); const pkg = JSON.parse(fs.readFileSync(path.join(cwd, 'package.json'), 'utf-8')); diff --git a/packages/create-svelte/types/internal.d.ts b/packages/create-svelte/types/internal.d.ts index 612d1cd3ceba..c7e6804cabf3 100644 --- a/packages/create-svelte/types/internal.d.ts +++ b/packages/create-svelte/types/internal.d.ts @@ -6,6 +6,7 @@ export type Options = { eslint: boolean; playwright: boolean; vitest: boolean; + svelte5?: boolean; // optional to not introduce a breaking change to the `create` API }; export type File = { @@ -22,7 +23,8 @@ export type Condition = | 'vitest' | 'skeleton' | 'default' - | 'skeletonlib'; + | 'skeletonlib' + | 'svelte5'; export type Common = { files: Array<{ diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index fa7796b0f1dd..412de7b64430 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -14,7 +14,7 @@ - fix: generate `__data.json` for prerendered pages when SSR is turned off ([#10988](https://github.com/sveltejs/kit/pull/10988)) -- chore: cleanup ([#11002](https://github.com/sveltejs/kit/pull/11002)) +- chore: add experimental compatibility for Svelte 5 ([#11002](https://github.com/sveltejs/kit/pull/11002)) ## 1.27.3