Skip to content

Commit 277a8e9

Browse files
committed
refactor: simplify Rsbuild commands
1 parent 2a071f3 commit 277a8e9

5 files changed

Lines changed: 19 additions & 159 deletions

File tree

src/cli/commands.ts

Lines changed: 18 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,97 +1,38 @@
11
import cac from 'cac';
2-
import { logger } from '@rsbuild/core';
3-
import type { BuildOptions, DevOptions, PreviewOptions } from './types.js';
42

53
declare global {
64
const RSTACK_VERSION: string;
75
}
86

7+
async function runRsbuildCLI(): Promise<void> {
8+
const args = process.argv.slice(2);
9+
process.argv = [process.execPath, 'rsbuild', ...args];
10+
11+
const { runCLI } = await import('@rsbuild/core');
12+
runCLI();
13+
}
14+
915
export function setupCommands(): void {
1016
const cli = cac('rs');
1117
const { argv } = process;
1218

1319
cli.version(RSTACK_VERSION);
1420

15-
cli.command('dev', 'Start the Rsbuild dev server').action(async (options: DevOptions) => {
16-
try {
17-
const { initRsbuild } = await import('./rsbuild.js');
18-
const rsbuild = await initRsbuild({
19-
options,
20-
});
21-
22-
if (!rsbuild) {
23-
return;
24-
}
25-
26-
await rsbuild.startDevServer();
27-
} catch (err) {
28-
logger.error('Failed to start dev server.');
29-
logger.error(err);
30-
process.exit(1);
31-
}
32-
});
21+
cli
22+
.command('dev [...args]', 'Start the Rsbuild dev server')
23+
.allowUnknownOptions()
24+
.action(runRsbuildCLI);
3325

3426
cli
35-
.command('build', 'Run Rsbuild to build the app for production')
27+
.command('build [...args]', 'Run Rsbuild to build the app for production')
28+
.allowUnknownOptions()
3629
.option('-w, --watch', 'Enable watch mode to automatically rebuild on file changes')
37-
.action(async (options: BuildOptions) => {
38-
try {
39-
if (!options.watch) {
40-
process.env.RSPACK_UNSAFE_FAST_DROP = 'true';
41-
}
42-
43-
const { initRsbuild } = await import('./rsbuild.js');
44-
const rsbuild = await initRsbuild({
45-
options,
46-
});
47-
48-
if (!rsbuild) {
49-
return;
50-
}
51-
52-
const buildResult = await rsbuild.build({
53-
watch: options.watch,
54-
});
55-
56-
if (buildResult) {
57-
if (options.watch) {
58-
// TODO
59-
} else {
60-
await buildResult.close();
61-
}
62-
}
63-
} catch (err) {
64-
const RSPACK_BUILD_ERROR = 'Rspack build failed.';
65-
const isRspackError = err instanceof Error && err.message === RSPACK_BUILD_ERROR;
66-
if (!isRspackError) {
67-
logger.error('Failed to build.');
68-
}
69-
70-
logger.error(err);
71-
process.exit(1);
72-
}
73-
});
30+
.action(runRsbuildCLI);
7431

7532
cli
76-
.command('preview', 'Preview the production build locally via Rsbuild')
77-
.action(async (options: PreviewOptions) => {
78-
try {
79-
const { initRsbuild } = await import('./rsbuild.js');
80-
const rsbuild = await initRsbuild({
81-
options,
82-
});
83-
84-
if (!rsbuild) {
85-
return;
86-
}
87-
88-
await rsbuild.preview();
89-
} catch (err) {
90-
logger.error('Failed to start preview server.');
91-
logger.error(err);
92-
process.exit(1);
93-
}
94-
});
33+
.command('preview [...args]', 'Preview the production build locally via Rsbuild')
34+
.allowUnknownOptions()
35+
.action(runRsbuildCLI);
9536

9637
cli.command('test [...args]', 'Run tests with Rstest').action(async () => {
9738
const { runCLI } = await import('@rstest/core');

src/cli/index.ts

Lines changed: 1 addition & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,5 @@
1-
import { logger } from '@rsbuild/core';
21
import { setupCommands } from './commands.js';
32

4-
const { argv } = process;
5-
6-
function initNodeEnv(command: string | undefined) {
7-
if (process.env.NODE_ENV) {
8-
return;
9-
}
10-
11-
switch (command) {
12-
case 'build':
13-
case 'preview':
14-
process.env.NODE_ENV = 'production';
15-
break;
16-
case 'dev':
17-
process.env.NODE_ENV = 'development';
18-
break;
19-
case 'test':
20-
process.env.NODE_ENV = 'test';
21-
process.env.RSTEST = 'true';
22-
break;
23-
}
24-
}
25-
263
export function runCLI(): void {
27-
const command = argv[2];
28-
29-
initNodeEnv(command);
30-
31-
try {
32-
setupCommands();
33-
} catch (err) {
34-
logger.error('Failed to start Rstack CLI.');
35-
logger.error(err);
36-
process.exit(1);
37-
}
4+
setupCommands();
385
}

src/cli/rsbuild.ts

Lines changed: 0 additions & 26 deletions
This file was deleted.

src/cli/types.ts

Lines changed: 0 additions & 12 deletions
This file was deleted.

src/helpers.ts

Lines changed: 0 additions & 10 deletions
This file was deleted.

0 commit comments

Comments
 (0)