diff --git a/packages/sv/lib/cli/add/utils.ts b/packages/sv/lib/cli/add/utils.ts
index d2e4e8216..95089cb1f 100644
--- a/packages/sv/lib/cli/add/utils.ts
+++ b/packages/sv/lib/cli/add/utils.ts
@@ -130,8 +130,8 @@ export const commonFilePaths = {
packageJson: 'package.json',
svelteConfig: 'svelte.config.js',
svelteConfigTS: 'svelte.config.ts',
- jsconfig: 'jsconfig.json',
- tsconfig: 'tsconfig.json',
+ jsConfig: 'jsconfig.json',
+ tsConfig: 'tsconfig.json',
viteConfig: 'vite.config.js',
viteConfigTS: 'vite.config.ts'
} as const;
diff --git a/packages/sv/lib/cli/add/workspace.ts b/packages/sv/lib/cli/add/workspace.ts
index 886ca7468..f49eec346 100644
--- a/packages/sv/lib/cli/add/workspace.ts
+++ b/packages/sv/lib/cli/add/workspace.ts
@@ -24,15 +24,17 @@ export async function createWorkspace({
const resolvedCwd = path.resolve(cwd);
// Will go up and prioritize jsconfig.json as it's first in the array
- const tjsconfig = find.any([commonFilePaths.jsconfig, commonFilePaths.tsconfig], { cwd });
- // If the file is not ending with jsconfig.json, then we are using typescript
- const usesTypescript = !tjsconfig?.endsWith(commonFilePaths.jsconfig);
+ const jtsConfigPath = find.any([commonFilePaths.jsConfig, commonFilePaths.tsConfig], { cwd });
+ const typescript = jtsConfigPath?.endsWith(commonFilePaths.tsConfig) ?? false;
// This is not linked with typescript detection
const viteConfigPath = path.join(resolvedCwd, commonFilePaths.viteConfigTS);
const viteConfig = fs.existsSync(viteConfigPath)
? commonFilePaths.viteConfigTS
: commonFilePaths.viteConfig;
+
+ // ecosystem doesn't support `svelte.config.ts` https://github.com/sveltejs/cli/issues/816#issuecomment-3568032867
+ // but the user may have opt in to it
const svelteConfigPath = path.join(resolvedCwd, commonFilePaths.svelteConfigTS);
const svelteConfig = fs.existsSync(svelteConfigPath)
? commonFilePaths.svelteConfigTS
@@ -82,7 +84,7 @@ export async function createWorkspace({
return {
cwd: resolvedCwd,
packageManager: packageManager ?? (await detect({ cwd }))?.name ?? getUserAgent() ?? 'npm',
- typescript: usesTypescript,
+ typescript,
files: {
viteConfig,
svelteConfig,
@@ -135,7 +137,7 @@ function parseKitOptions(cwd: string) {
const { ast } = parseScript(configSource);
const defaultExport = ast.body.find((s) => s.type === 'ExportDefaultDeclaration');
- if (!defaultExport) throw Error('Missing default export in `svelte.config.js`');
+ if (!defaultExport) throw Error(`Missing default export in \`${commonFilePaths.svelteConfig}\``);
let objectExpression: AstTypes.ObjectExpression | undefined;
if (defaultExport.declaration.type === 'Identifier') {
@@ -157,14 +159,17 @@ function parseKitOptions(cwd: string) {
}
if (!objectExpression)
- throw Error('Unable to find svelte config object expression from `svelte.config.js`');
+ throw Error(
+ `Unable to find svelte config object expression from \`${commonFilePaths.svelteConfig}\``
+ );
} else if (defaultExport.declaration.type === 'ObjectExpression') {
// e.g. `export default { ... };`
objectExpression = defaultExport.declaration;
}
// We'll error out since we can't safely determine the config object
- if (!objectExpression) throw new Error('Unexpected svelte config shape from `svelte.config.js`');
+ if (!objectExpression)
+ throw new Error(`Unexpected svelte config shape from \`${commonFilePaths.svelteConfig}\``);
const kit = object.property(objectExpression, { name: 'kit', fallback: object.create({}) });
const files = object.property(kit, { name: 'files', fallback: object.create({}) });
diff --git a/packages/sv/lib/cli/create.ts b/packages/sv/lib/cli/create.ts
index e02d2eeb6..7a5b7a4fe 100644
--- a/packages/sv/lib/cli/create.ts
+++ b/packages/sv/lib/cli/create.ts
@@ -390,7 +390,8 @@ export async function createVirtualWorkspace({
files: {
...tentativeWorkspace.files,
viteConfig: type === 'typescript' ? commonFilePaths.viteConfigTS : commonFilePaths.viteConfig,
- svelteConfig: commonFilePaths.svelteConfig // currently we always use js files, never typescript files
+ // ecosystem doesn't support `svelte.config.ts` https://github.com/sveltejs/cli/issues/816#issuecomment-3568032867
+ svelteConfig: commonFilePaths.svelteConfig
}
};
diff --git a/packages/sv/lib/create/index.ts b/packages/sv/lib/create/index.ts
index 59b1ba8fb..89dad90b5 100644
--- a/packages/sv/lib/create/index.ts
+++ b/packages/sv/lib/create/index.ts
@@ -1,6 +1,7 @@
import fs from 'node:fs';
import path from 'node:path';
import { mkdirp, copy, dist, getSharedFiles } from './utils.ts';
+import { commonFilePaths } from '../cli/add/utils.ts';
export type TemplateType = (typeof templateTypes)[number];
export type LanguageType = (typeof languageTypes)[number];
@@ -68,7 +69,7 @@ function write_template_files(template: string, types: LanguageType, name: strin
function write_common_files(cwd: string, options: Options, name: string) {
const files = getSharedFiles();
- const pkg_file = path.join(cwd, 'package.json');
+ const pkg_file = path.join(cwd, commonFilePaths.packageJson);
const pkg = /** @type {any} */ JSON.parse(fs.readFileSync(pkg_file, 'utf-8'));
sort_files(files).forEach((file) => {
@@ -77,7 +78,7 @@ function write_common_files(cwd: string, options: Options, name: string) {
if (exclude || !include) return;
- if (file.name === 'package.json') {
+ if (file.name === commonFilePaths.packageJson) {
const new_pkg = JSON.parse(file.contents);
merge(pkg, new_pkg);
} else {
diff --git a/packages/sv/lib/create/playground.ts b/packages/sv/lib/create/playground.ts
index 6ec216415..189de81a1 100644
--- a/packages/sv/lib/create/playground.ts
+++ b/packages/sv/lib/create/playground.ts
@@ -6,6 +6,7 @@ import { parseJson, parseScript, parseSvelte } from '../core/tooling/parsers.ts'
import { isVersionUnsupportedBelow } from '../core/index.ts';
import { getSharedFiles } from './utils.ts';
import { walk } from 'zimmerframe';
+import { commonFilePaths } from '../cli/add/utils.ts';
export function validatePlaygroundUrl(link: string): boolean {
try {
@@ -231,7 +232,7 @@ export function setupPlaygroundProject(
fs.writeFileSync(filePath, newContent, 'utf-8');
// add packages as dependencies to package.json if requested
- const pkgPath = path.join(cwd, 'package.json');
+ const pkgPath = path.join(cwd, commonFilePaths.packageJson);
const pkgSource = fs.readFileSync(pkgPath, 'utf-8');
const pkgJson = parseJson(pkgSource);
let updatePackageJson = false;
@@ -245,7 +246,8 @@ export function setupPlaygroundProject(
let experimentalAsyncNeeded = true;
const addExperimentalAsync = () => {
- const svelteConfigPath = path.join(cwd, 'svelte.config.js');
+ // ecosystem doesn't support `svelte.config.ts` https://github.com/sveltejs/cli/issues/816#issuecomment-3568032867
+ const svelteConfigPath = path.join(cwd, commonFilePaths.svelteConfig);
const svelteConfig = fs.readFileSync(svelteConfigPath, 'utf-8');
const { ast, generateCode } = parseScript(svelteConfig);
const { value: config } = js.exports.createDefault(ast, { fallback: js.object.create({}) });
@@ -253,7 +255,7 @@ export function setupPlaygroundProject(
fs.writeFileSync(svelteConfigPath, generateCode(), 'utf-8');
};
- // we want to change the svelte version, even if the user decieded
+ // we want to change the svelte version, even if the user decided
// to not install external dependencies
if (playground.svelteVersion) {
updatePackageJson = true;
diff --git a/packages/sv/lib/create/templates/demo/src/routes/+page.svelte b/packages/sv/lib/create/templates/demo/src/routes/+page.svelte
index a328ff63a..0f797fd5f 100644
--- a/packages/sv/lib/create/templates/demo/src/routes/+page.svelte
+++ b/packages/sv/lib/create/templates/demo/src/routes/+page.svelte
@@ -1,7 +1,7 @@
diff --git a/packages/sv/lib/create/templates/demo/src/routes/Header.svelte b/packages/sv/lib/create/templates/demo/src/routes/Header.svelte
index 0e719eb08..ff378aecd 100644
--- a/packages/sv/lib/create/templates/demo/src/routes/Header.svelte
+++ b/packages/sv/lib/create/templates/demo/src/routes/Header.svelte
@@ -1,8 +1,8 @@
diff --git a/packages/sv/lib/create/templates/demo/src/lib/images/github.svg b/packages/sv/lib/create/templates/demo/src/routes/github.svg
similarity index 100%
rename from packages/sv/lib/create/templates/demo/src/lib/images/github.svg
rename to packages/sv/lib/create/templates/demo/src/routes/github.svg
diff --git a/packages/sv/lib/create/templates/demo/src/lib/images/svelte-logo.svg b/packages/sv/lib/create/templates/demo/src/routes/svelte-logo.svg
similarity index 100%
rename from packages/sv/lib/create/templates/demo/src/lib/images/svelte-logo.svg
rename to packages/sv/lib/create/templates/demo/src/routes/svelte-logo.svg
diff --git a/packages/sv/lib/create/templates/demo/src/lib/images/svelte-welcome.png b/packages/sv/lib/create/templates/demo/src/routes/svelte-welcome.png
similarity index 100%
rename from packages/sv/lib/create/templates/demo/src/lib/images/svelte-welcome.png
rename to packages/sv/lib/create/templates/demo/src/routes/svelte-welcome.png
diff --git a/packages/sv/lib/create/templates/demo/src/lib/images/svelte-welcome.webp b/packages/sv/lib/create/templates/demo/src/routes/svelte-welcome.webp
similarity index 100%
rename from packages/sv/lib/create/templates/demo/src/lib/images/svelte-welcome.webp
rename to packages/sv/lib/create/templates/demo/src/routes/svelte-welcome.webp