Skip to content

Commit 71ddbc7

Browse files
benmccannteemingc
andauthored
chore: remove dependency on sade (#15272)
closes #14175 removes dependency on sade and transitive dependency on mri I thought this required a newer version of Node, but turns out we could actually merge this in Kit 2 --------- Co-authored-by: Tee Ming <chewteeming01@gmail.com>
1 parent 5ce9c84 commit 71ddbc7

File tree

4 files changed

+77
-28
lines changed

4 files changed

+77
-28
lines changed

.changeset/poor-dragons-watch.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/kit': patch
3+
---
4+
5+
chore: remove dependency on `sade`

packages/kit/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
"kleur": "^4.1.5",
2929
"magic-string": "^0.30.5",
3030
"mrmime": "^2.0.0",
31-
"sade": "^1.8.1",
3231
"set-cookie-parser": "^3.0.0",
3332
"sirv": "^3.0.0"
3433
},

packages/kit/src/cli.js

Lines changed: 72 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import fs from 'node:fs';
22
import process from 'node:process';
3+
import { parseArgs } from 'node:util';
34
import colors from 'kleur';
4-
import sade from 'sade';
55
import { load_config } from './core/config/index.js';
66
import { coalesce_to_error } from './utils/error.js';
77

@@ -20,28 +20,76 @@ function handle_error(e) {
2020
}
2121

2222
const pkg = JSON.parse(fs.readFileSync(new URL('../package.json', import.meta.url), 'utf-8'));
23-
const prog = sade('svelte-kit').version(pkg.version);
24-
25-
prog
26-
.command('sync')
27-
.describe('Synchronise generated type definitions')
28-
.option('--mode', 'Specify a mode for loading environment variables', 'development')
29-
.action(async ({ mode }) => {
30-
const config_files = ['js', 'ts']
31-
.map((ext) => `svelte.config.${ext}`)
32-
.filter((f) => fs.existsSync(f));
33-
if (config_files.length === 0) {
34-
console.warn(`Missing Svelte config file in ${process.cwd()} — skipping`);
35-
return;
36-
}
37-
38-
try {
39-
const config = await load_config();
40-
const sync = await import('./core/sync/sync.js');
41-
sync.all_types(config, mode);
42-
} catch (error) {
43-
handle_error(error);
44-
}
23+
24+
const help = `
25+
Usage: svelte-kit <command> [options]
26+
27+
Commands:
28+
sync Synchronise generated type definitions
29+
30+
Options:
31+
--version, -v Show version number
32+
--help, -h Show this help message
33+
34+
Sync Options:
35+
--mode <mode> Specify a mode for loading environment variables (default: development)
36+
`;
37+
38+
let parsed;
39+
try {
40+
parsed = parseArgs({
41+
options: {
42+
version: { type: 'boolean', short: 'v' },
43+
help: { type: 'boolean', short: 'h' },
44+
mode: { type: 'string', default: 'development' }
45+
},
46+
allowPositionals: true,
47+
strict: true
4548
});
49+
} catch (err) {
50+
const error = /** @type {Error} */ (err);
51+
console.error(colors.bold().red(`> ${error.message}`));
52+
console.log(help);
53+
process.exit(1);
54+
}
55+
56+
const { values, positionals } = parsed;
57+
58+
if (values.version) {
59+
console.log(pkg.version);
60+
process.exit(0);
61+
}
4662

47-
prog.parse(process.argv, { unknown: (arg) => `Unknown option: ${arg}` });
63+
if (values.help) {
64+
console.log(help);
65+
process.exit(0);
66+
}
67+
68+
const command = positionals[0];
69+
70+
if (!command) {
71+
console.log(help);
72+
process.exit(0);
73+
}
74+
75+
if (command === 'sync') {
76+
const config_files = ['js', 'ts']
77+
.map((ext) => `svelte.config.${ext}`)
78+
.filter((f) => fs.existsSync(f));
79+
if (config_files.length === 0) {
80+
console.warn(`Missing Svelte config file in ${process.cwd()} — skipping`);
81+
process.exit(0);
82+
}
83+
84+
try {
85+
const config = await load_config();
86+
const sync = await import('./core/sync/sync.js');
87+
sync.all_types(config, values.mode);
88+
} catch (error) {
89+
handle_error(error);
90+
}
91+
} else {
92+
console.error(colors.bold().red(`> Unknown command: ${command}`));
93+
console.log(help);
94+
process.exit(1);
95+
}

pnpm-lock.yaml

Lines changed: 0 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)