Skip to content

Commit f09e5ae

Browse files
authored
TINY-12824: Add rspack dev server support (modernize webpack setup) (#157)
1 parent 53cc983 commit f09e5ae

File tree

13 files changed

+635
-180
lines changed

13 files changed

+635
-180
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66

77
## Unreleased
88

9+
## Added
10+
- Add rspack dev server support. #TINY-12824
11+
912
## 15.0.4 - 2025-10-22
1013

1114
## Changed

Jenkinsfile

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@
66
standardProperties()
77

88
timestamps {
9-
tinyPods.node(tag: '20') {
9+
tinyPods.node(
10+
tag: '20',
11+
resourceRequestMemory: '2Gi',
12+
resourceLimitMemory: '2Gi'
13+
) {
1014
stage("clean") {
1115
exec('yarn clean')
1216
}
@@ -27,6 +31,10 @@ timestamps {
2731
// Testing
2832
stage("bedrock testing") {
2933
bedrockRemoteBrowsers(
34+
testContainer: [
35+
resourceRequestMemory: '2Gi',
36+
resourceLimitMemory: '2Gi',
37+
],
3038
platforms: [
3139
[ browser: 'chrome', provider: 'aws', buckets: 2 ],
3240
[ browser: 'firefox', provider: 'aws', buckets: 2 ],

modules/server/package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
"@ephox/bedrock-runner": "^15.0.2",
2424
"@jsdevtools/coverage-istanbul-loader": "^3.0.5",
2525
"@lambdatest/node-tunnel": "^4.0.4",
26+
"@rspack/core": "^1.5.2",
27+
"@rspack/dev-server": "^1.1.4",
2628
"@wdio/globals": "^8.14.1",
2729
"async": "^3.0.0",
2830
"chalk": "^4.1.1",
@@ -44,11 +46,10 @@
4446
"mkdirp": "^1.0.0",
4547
"portfinder": "^1.0.25",
4648
"recursive-readdir-sync": "^1.0.6",
47-
"rollup": "^2.0.0",
48-
"rollup-plugin-typescript2": "^0.24.0",
4949
"serve-static": "^1.10.2",
5050
"source-map-loader": "^3.0.0",
5151
"split2": "^4.2.0",
52+
"ts-checker-rspack-plugin": "^1.1.5",
5253
"ts-loader": "^9.0.0",
5354
"tsconfig-paths-webpack-plugin": "^3.2.0",
5455
"webdriverio": "^8.0.0",

modules/server/src/main/ts/BedrockManual.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@ import { Attempt } from './bedrock/core/Attempt';
22
import * as Version from './bedrock/core/Version';
33
import * as RunnerRoutes from './bedrock/server/RunnerRoutes';
44
import * as Webpack from './bedrock/compiler/Webpack';
5+
import * as Rspack from './bedrock/compiler/Rspack';
56
import { BedrockManualSettings } from './bedrock/core/Settings';
67
import { ExitCodes } from './bedrock/util/ExitCodes';
78
import * as SettingsResolver from './bedrock/core/SettingsResolver';
9+
import { DevServerServeSettings } from './bedrock/compiler/Types';
810

911
export const go = (bedrockManualSettings: BedrockManualSettings): void => {
1012
console.log('bedrock-manual ' + Version.get() + ' starting...');
@@ -14,7 +16,7 @@ export const go = (bedrockManualSettings: BedrockManualSettings): void => {
1416
const routes = RunnerRoutes.generate('manual', settings.projectdir, settings.basedir, settings.config, settings.bundler, settings.testfiles, settings.chunk, 0, settings.singleTimeout, true, basePage, settings.coverage, settings.polyfills);
1517

1618
routes.then(async (runner) => {
17-
const serveSettings: Webpack.WebpackServeSettings = {
19+
const serveSettings: DevServerServeSettings = {
1820
...settings,
1921
// There is no driver for manual mode.
2022
driver: Attempt.failed('There is no webdriver for manual mode'),
@@ -23,11 +25,12 @@ export const go = (bedrockManualSettings: BedrockManualSettings): void => {
2325
// sticky session is used by auto mode only
2426
stickyFirstSession: false,
2527
// reset mouse position will never work on manual
26-
skipResetMousePosition: true
28+
skipResetMousePosition: true,
2729
};
2830

2931
try {
30-
const service = await Webpack.devserver(serveSettings);
32+
const devServer = settings.bundler === 'rspack' ? Rspack.devserver : Webpack.devserver;
33+
const service = await devServer(serveSettings);
3134
service.enableHud();
3235
console.log('bedrock-manual ' + Version.get() + ' available at: http://localhost:' + service.port);
3336
} catch (err) {

modules/server/src/main/ts/bedrock/cli/ClOptions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@ export const bundler: ClOption = {
5757
type: String,
5858
required: false,
5959
defaultValue: 'webpack',
60-
description: 'DISABLED: The name bundler to use webpack/rollup (forced webpack in this build)',
60+
description: 'Specify the bundler (webpack, rspack).',
6161
validate: Extraction.inSet([
6262
'webpack',
63-
'rollup'
63+
'rspack'
6464
])
6565
};
6666

modules/server/src/main/ts/bedrock/compiler/Compiler.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
import * as fs from 'fs';
22
import * as Webpack from '../compiler/Webpack';
3+
import * as Rspack from '../compiler/Rspack';
34

45
export interface Compiler {
56
readonly generate: () => Promise<Buffer | string>;
67
}
78

8-
export const compile = (tsConfigFile: string, scratchDir: string, basedir: string, exitOnCompileError: boolean, files: string[], coverage: string[], polyfills: string[]): Compiler => {
9+
export const compile = (bundler: 'webpack' | 'rspack', tsConfigFile: string, scratchDir: string, basedir: string, exitOnCompileError: boolean, files: string[], coverage: string[], polyfills: string[]): Compiler => {
910
const getCompileFunc = () => {
10-
return Webpack.compile;
11+
switch (bundler) {
12+
case 'rspack':
13+
return Rspack.compile;
14+
case 'webpack':
15+
return Webpack.compile;
16+
}
1117
};
1218

1319
const generate = async (): Promise<Buffer | string> => {

modules/server/src/main/ts/bedrock/compiler/Rollup.ts

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

0 commit comments

Comments
 (0)