diff --git a/.changeset/cyan-ads-pump.md b/.changeset/cyan-ads-pump.md new file mode 100644 index 000000000000..b04cd9dd8c7b --- /dev/null +++ b/.changeset/cyan-ads-pump.md @@ -0,0 +1,5 @@ +--- +'create-svelte': patch +--- + +Use the name of folder as name in package.json diff --git a/packages/create-svelte/bin.js b/packages/create-svelte/bin.js index ca02e73de111..3d48013a5291 100755 --- a/packages/create-svelte/bin.js +++ b/packages/create-svelte/bin.js @@ -84,7 +84,7 @@ async function main() { const name = path.basename(path.resolve(cwd)); write_template_files(options.template, options.typescript, name, cwd); - write_common_files(cwd, options); + write_common_files(cwd, options, name); console.log(bold(green('✔ Copied project files'))); @@ -173,8 +173,9 @@ function write_template_files(template, typescript, name, cwd) { * * @param {string} cwd * @param {import('./types/internal').Options} options + * @param {string} name */ -function write_common_files(cwd, options) { +function write_common_files(cwd, options, name) { const shared = dist('shared.json'); const { files } = /** @type {import('./types/internal').Common} */ (JSON.parse( fs.readFileSync(shared, 'utf-8') @@ -201,6 +202,7 @@ function write_common_files(cwd, options) { pkg.dependencies = sort_keys(pkg.dependencies); pkg.devDependencies = sort_keys(pkg.devDependencies); + pkg.name = toValidPackageName(name); fs.writeFileSync(pkg_file, JSON.stringify(pkg, null, ' ')); } @@ -260,4 +262,14 @@ function dist(path) { return fileURLToPath(new URL(`./dist/${path}`, import.meta.url).href); } +/** @param {string} name */ +function toValidPackageName(name) { + return name + .trim() + .toLowerCase() + .replace(/\s+/g, '-') + .replace(/^[._]/, '') + .replace(/[^a-z0-9~.-]+/g, '-'); +} + main();