Skip to content

Commit 2e613f2

Browse files
committed
various create-svelte improvements
1 parent 7b79522 commit 2e613f2

File tree

7 files changed

+81
-43
lines changed

7 files changed

+81
-43
lines changed

.changeset/lemon-camels-brush.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'create-svelte': patch
3+
---
4+
5+
Respect Ctrl-C when running create-svelte

.changeset/popular-hounds-love.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'create-svelte': patch
3+
---
4+
5+
Make project name an explicit option'

.changeset/unlucky-otters-tickle.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'create-svelte': patch
3+
---
4+
5+
Prompt for directory when running create-svelte without argument

packages/create-svelte/bin.js

+62-39
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,21 @@ async function main() {
2121
console.log(gray(`\ncreate-svelte version ${version}`));
2222
console.log(disclaimer);
2323

24-
const cwd = process.argv[2] || '.';
24+
let cwd = process.argv[2] || '.';
25+
26+
if (cwd === '.') {
27+
const opts = await prompts([
28+
{
29+
type: 'text',
30+
name: 'dir',
31+
message: 'Where should we create your project?\n (leave blank to use current directory)'
32+
}
33+
]);
34+
35+
if (opts.dir) {
36+
cwd = opts.dir;
37+
}
38+
}
2539

2640
if (fs.existsSync(cwd)) {
2741
if (fs.readdirSync(cwd).length > 0) {
@@ -39,48 +53,57 @@ async function main() {
3953
}
4054

4155
const options = /** @type {import('./types/internal').Options} */ (
42-
await prompts([
43-
{
44-
type: 'select',
45-
name: 'template',
46-
message: 'Which Svelte app template?',
47-
choices: fs.readdirSync(dist('templates')).map((dir) => {
48-
const meta_file = dist(`templates/${dir}/meta.json`);
49-
const meta = JSON.parse(fs.readFileSync(meta_file, 'utf8'));
50-
51-
return {
52-
title: meta.description,
53-
value: dir
54-
};
55-
})
56-
},
57-
{
58-
type: 'toggle',
59-
name: 'typescript',
60-
message: 'Use TypeScript?',
61-
initial: false,
62-
active: 'Yes',
63-
inactive: 'No'
64-
},
56+
await prompts(
57+
[
58+
{
59+
type: 'select',
60+
name: 'template',
61+
message: 'Which Svelte app template?',
62+
choices: fs.readdirSync(dist('templates')).map((dir) => {
63+
const meta_file = dist(`templates/${dir}/meta.json`);
64+
const meta = JSON.parse(fs.readFileSync(meta_file, 'utf8'));
65+
66+
return {
67+
title: meta.description,
68+
value: dir
69+
};
70+
})
71+
},
72+
{
73+
type: 'toggle',
74+
name: 'typescript',
75+
message: 'Use TypeScript?',
76+
initial: false,
77+
active: 'Yes',
78+
inactive: 'No'
79+
},
80+
{
81+
type: 'toggle',
82+
name: 'eslint',
83+
message: 'Add ESLint for code linting?',
84+
initial: false,
85+
active: 'Yes',
86+
inactive: 'No'
87+
},
88+
{
89+
type: 'toggle',
90+
name: 'prettier',
91+
message: 'Add Prettier for code formatting?',
92+
initial: false,
93+
active: 'Yes',
94+
inactive: 'No'
95+
}
96+
],
6597
{
66-
type: 'toggle',
67-
name: 'eslint',
68-
message: 'Add ESLint for code linting?',
69-
initial: false,
70-
active: 'Yes',
71-
inactive: 'No'
72-
},
73-
{
74-
type: 'toggle',
75-
name: 'prettier',
76-
message: 'Add Prettier for code formatting?',
77-
initial: false,
78-
active: 'Yes',
79-
inactive: 'No'
98+
onCancel: () => {
99+
process.exit(1);
100+
}
80101
}
81-
])
102+
)
82103
);
83104

105+
options.name = path.basename(path.resolve(cwd));
106+
84107
await create(cwd, options);
85108

86109
console.log(bold(green('\nYour project is ready!')));

packages/create-svelte/index.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,8 @@ import { mkdirp, copy, dist } from './utils.js';
1111
export async function create(cwd, options) {
1212
mkdirp(cwd);
1313

14-
const name = path.basename(path.resolve(cwd));
15-
16-
write_template_files(options.template, options.typescript, name, cwd);
17-
write_common_files(cwd, options, name);
14+
write_template_files(options.template, options.typescript, options.name, cwd);
15+
write_common_files(cwd, options, options.name);
1816
}
1917

2018
/**

packages/create-svelte/scripts/update-template-repo-contents.js

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ fs.readdirSync(repo).forEach((file) => {
1414
});
1515

1616
await create(repo, {
17+
name: 'kit-template-default',
1718
template: 'default',
1819
eslint: false,
1920
typescript: false,

packages/create-svelte/types/internal.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export type Options = {
2+
name: string;
23
template: 'default' | 'skeleton';
34
typescript: boolean;
45
prettier: boolean;

0 commit comments

Comments
 (0)