@rsbuild/core 0.0.18 → 0.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/rsbuild.js +11 -0
- package/dist/rspack-provider/core/createCompiler.d.ts +4 -1
- package/dist/rspack-provider/core/createCompiler.js +19 -2
- package/dist/rspack-provider/provider.js +3 -3
- package/dist/server/devServer.d.ts +15 -3
- package/dist/server/devServer.js +84 -21
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/middlewares.d.ts +2 -0
- package/dist/server/middlewares.js +35 -0
- package/dist/server/prodServer.d.ts +1 -0
- package/dist/server/prodServer.js +5 -2
- package/dist/server/proxy.d.ts +9 -0
- package/dist/server/proxy.js +92 -0
- package/package.json +3 -2
- package/dist/rspack-provider/core/startDevServer.d.ts +0 -5
- package/dist/rspack-provider/core/startDevServer.js +0 -59
package/bin/rsbuild.js
CHANGED
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
const { logger } = require('rslog');
|
|
3
3
|
|
|
4
|
+
function initNodeEnv() {
|
|
5
|
+
if (!process.env.NODE_ENV) {
|
|
6
|
+
const command = process.argv[2];
|
|
7
|
+
process.env.NODE_ENV = ['build', 'preview'].includes(command)
|
|
8
|
+
? 'production'
|
|
9
|
+
: 'development';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
4
13
|
async function main() {
|
|
14
|
+
initNodeEnv();
|
|
15
|
+
|
|
5
16
|
const { version } = require('../package.json');
|
|
6
17
|
|
|
7
18
|
// If not called through a package manager,
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { type RspackConfig } from '@rsbuild/shared';
|
|
2
|
+
import { type RspackCompiler, type RspackMultiCompiler } from '@rsbuild/shared';
|
|
3
|
+
import { type InitConfigsOptions } from './initConfigs';
|
|
2
4
|
import type { Context } from '../types';
|
|
3
5
|
export declare function createCompiler({
|
|
4
6
|
context,
|
|
@@ -6,4 +8,5 @@ export declare function createCompiler({
|
|
|
6
8
|
}: {
|
|
7
9
|
context: Context;
|
|
8
10
|
rspackConfigs: RspackConfig[];
|
|
9
|
-
}): Promise<import("@rspack/core").MultiCompiler>;
|
|
11
|
+
}): Promise<import("@rspack/core").MultiCompiler>;
|
|
12
|
+
export declare function startDevCompile(options: InitConfigsOptions, customCompiler?: RspackCompiler | RspackMultiCompiler): Promise<import("@rsbuild/shared").DevMiddleware>;
|
|
@@ -28,10 +28,13 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
29
|
var createCompiler_exports = {};
|
|
30
30
|
__export(createCompiler_exports, {
|
|
31
|
-
createCompiler: () => createCompiler
|
|
31
|
+
createCompiler: () => createCompiler,
|
|
32
|
+
startDevCompile: () => startDevCompile
|
|
32
33
|
});
|
|
33
34
|
module.exports = __toCommonJS(createCompiler_exports);
|
|
34
35
|
var import_shared = require("@rsbuild/shared");
|
|
36
|
+
var import_devMiddleware = require("./devMiddleware");
|
|
37
|
+
var import_initConfigs = require("./initConfigs");
|
|
35
38
|
async function createCompiler({
|
|
36
39
|
context,
|
|
37
40
|
rspackConfigs
|
|
@@ -79,7 +82,21 @@ async function createCompiler({
|
|
|
79
82
|
(0, import_shared.debug)("create compiler done");
|
|
80
83
|
return compiler;
|
|
81
84
|
}
|
|
85
|
+
async function startDevCompile(options, customCompiler) {
|
|
86
|
+
let compiler;
|
|
87
|
+
if (customCompiler) {
|
|
88
|
+
compiler = customCompiler;
|
|
89
|
+
} else {
|
|
90
|
+
const { rspackConfigs } = await (0, import_initConfigs.initConfigs)(options);
|
|
91
|
+
compiler = await createCompiler({
|
|
92
|
+
context: options.context,
|
|
93
|
+
rspackConfigs
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
return (0, import_devMiddleware.getDevMiddleware)(compiler);
|
|
97
|
+
}
|
|
82
98
|
// Annotate the CommonJS export names for ESM import in node:
|
|
83
99
|
0 && (module.exports = {
|
|
84
|
-
createCompiler
|
|
100
|
+
createCompiler,
|
|
101
|
+
startDevCompile
|
|
85
102
|
});
|
|
@@ -73,10 +73,10 @@ function rspackProvider({
|
|
|
73
73
|
});
|
|
74
74
|
},
|
|
75
75
|
async startDevServer(options) {
|
|
76
|
-
const {
|
|
77
|
-
return (0,
|
|
76
|
+
const { startDevCompile } = await Promise.resolve().then(() => __toESM(require("./core/createCompiler")));
|
|
77
|
+
return (0, import_server.startDevServer)(
|
|
78
78
|
{ context, pluginStore, rsbuildOptions },
|
|
79
|
-
|
|
79
|
+
startDevCompile,
|
|
80
80
|
options
|
|
81
81
|
);
|
|
82
82
|
},
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/// <reference types="node" />
|
|
4
4
|
import { Server } from 'http';
|
|
5
5
|
import type { ListenOptions } from 'net';
|
|
6
|
-
import { RsbuildDevServerOptions, CreateDevServerOptions,
|
|
6
|
+
import { RsbuildDevServerOptions, CreateDevServerOptions, DevServerContext, StartDevServerOptions, StartServerResult } from '@rsbuild/shared';
|
|
7
7
|
import connect from 'connect';
|
|
8
8
|
export declare class RsbuildDevServer {
|
|
9
9
|
private readonly dev;
|
|
@@ -17,7 +17,19 @@ export declare class RsbuildDevServer {
|
|
|
17
17
|
onInit(app: Server): Promise<void>;
|
|
18
18
|
private applyDefaultMiddlewares;
|
|
19
19
|
createHTTPServer(): Promise<Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse> | import("https").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>>;
|
|
20
|
-
listen(options?: number | ListenOptions | undefined, listener?: () => void): void;
|
|
20
|
+
listen(options?: number | ListenOptions | undefined, listener?: (err?: Error) => Promise<void>): void;
|
|
21
21
|
close(): void;
|
|
22
22
|
}
|
|
23
|
-
export declare function
|
|
23
|
+
export declare function startDevServer<Options extends {
|
|
24
|
+
context: DevServerContext;
|
|
25
|
+
}>(options: Options, startDevCompile: (options: Options, compiler: StartDevServerOptions['compiler']) => Promise<CreateDevServerOptions['devMiddleware']>, {
|
|
26
|
+
open,
|
|
27
|
+
compiler,
|
|
28
|
+
printURLs,
|
|
29
|
+
strictPort,
|
|
30
|
+
serverOptions,
|
|
31
|
+
logger: customLogger,
|
|
32
|
+
getPortSilently
|
|
33
|
+
}?: StartDevServerOptions & {
|
|
34
|
+
defaultPort?: number;
|
|
35
|
+
}): Promise<StartServerResult>;
|
package/dist/server/devServer.js
CHANGED
|
@@ -29,7 +29,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
29
29
|
var devServer_exports = {};
|
|
30
30
|
__export(devServer_exports, {
|
|
31
31
|
RsbuildDevServer: () => RsbuildDevServer,
|
|
32
|
-
|
|
32
|
+
startDevServer: () => startDevServer
|
|
33
33
|
});
|
|
34
34
|
module.exports = __toCommonJS(devServer_exports);
|
|
35
35
|
var import_http = require("http");
|
|
@@ -40,6 +40,8 @@ var import_constants = require("./constants");
|
|
|
40
40
|
var import_dev_middleware = __toESM(require("./dev-middleware"));
|
|
41
41
|
var import_deepmerge = require("@rsbuild/shared/deepmerge");
|
|
42
42
|
var import_connect = __toESM(require("connect"));
|
|
43
|
+
var import_proxy = require("./proxy");
|
|
44
|
+
var import_middlewares = require("./middlewares");
|
|
43
45
|
class RsbuildDevServer {
|
|
44
46
|
constructor(options) {
|
|
45
47
|
this.middlewares = (0, import_connect.default)();
|
|
@@ -106,6 +108,13 @@ class RsbuildDevServer {
|
|
|
106
108
|
}
|
|
107
109
|
next();
|
|
108
110
|
});
|
|
111
|
+
if (dev.proxy) {
|
|
112
|
+
const { middlewares, handleUpgrade } = (0, import_proxy.createProxyMiddleware)(dev.proxy);
|
|
113
|
+
app && handleUpgrade(app);
|
|
114
|
+
middlewares.forEach((middleware) => {
|
|
115
|
+
this.middlewares.use(middleware);
|
|
116
|
+
});
|
|
117
|
+
}
|
|
109
118
|
devMiddleware.init(app);
|
|
110
119
|
devMiddleware.middleware && this.middlewares.use(devMiddleware.middleware);
|
|
111
120
|
if (dev.historyApiFallback) {
|
|
@@ -117,6 +126,7 @@ class RsbuildDevServer {
|
|
|
117
126
|
this.middlewares.use(historyApiFallbackMiddleware);
|
|
118
127
|
devMiddleware.middleware && this.middlewares.use(devMiddleware.middleware);
|
|
119
128
|
}
|
|
129
|
+
this.middlewares.use(import_middlewares.faviconFallbackMiddleware);
|
|
120
130
|
}
|
|
121
131
|
async createHTTPServer() {
|
|
122
132
|
const { dev } = this;
|
|
@@ -143,30 +153,83 @@ class RsbuildDevServer {
|
|
|
143
153
|
this.app.close();
|
|
144
154
|
}
|
|
145
155
|
}
|
|
146
|
-
async function
|
|
156
|
+
async function startDevServer(options, startDevCompile, {
|
|
157
|
+
open,
|
|
158
|
+
compiler,
|
|
159
|
+
printURLs = true,
|
|
160
|
+
strictPort = false,
|
|
161
|
+
serverOptions = {},
|
|
162
|
+
logger: customLogger,
|
|
163
|
+
getPortSilently
|
|
164
|
+
} = {}) {
|
|
147
165
|
var _a;
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
const
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
}
|
|
166
|
+
if (!process.env.NODE_ENV) {
|
|
167
|
+
process.env.NODE_ENV = "development";
|
|
168
|
+
}
|
|
169
|
+
const rsbuildConfig = options.context.config;
|
|
170
|
+
const logger = customLogger != null ? customLogger : import_shared.logger;
|
|
171
|
+
const { devServerConfig, port, host, https } = await (0, import_shared.getDevOptions)({
|
|
172
|
+
rsbuildConfig,
|
|
173
|
+
serverOptions,
|
|
174
|
+
strictPort,
|
|
175
|
+
getPortSilently
|
|
176
|
+
});
|
|
177
|
+
options.context.devServer = {
|
|
178
|
+
hostname: host,
|
|
179
|
+
port,
|
|
180
|
+
https,
|
|
181
|
+
open
|
|
165
182
|
};
|
|
166
|
-
|
|
183
|
+
const protocol = https ? "https" : "http";
|
|
184
|
+
let urls = (0, import_shared.getAddressUrls)(protocol, port, (_a = rsbuildConfig.dev) == null ? void 0 : _a.host);
|
|
185
|
+
if (printURLs) {
|
|
186
|
+
if ((0, import_shared.isFunction)(printURLs)) {
|
|
187
|
+
urls = printURLs(urls);
|
|
188
|
+
if (!Array.isArray(urls)) {
|
|
189
|
+
throw new Error("Please return an array in the `printURLs` function.");
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
(0, import_shared.printServerURLs)(urls, logger);
|
|
193
|
+
}
|
|
194
|
+
(0, import_shared.debug)("create dev server");
|
|
195
|
+
const devMiddleware = await startDevCompile(options, compiler);
|
|
196
|
+
const server = new RsbuildDevServer({
|
|
197
|
+
pwd: options.context.rootPath,
|
|
198
|
+
devMiddleware,
|
|
199
|
+
dev: devServerConfig
|
|
200
|
+
});
|
|
201
|
+
(0, import_shared.debug)("create dev server done");
|
|
202
|
+
await options.context.hooks.onBeforeStartDevServerHook.call();
|
|
203
|
+
const httpServer = await server.createHTTPServer();
|
|
204
|
+
await server.onInit(httpServer);
|
|
205
|
+
(0, import_shared.debug)("listen dev server");
|
|
206
|
+
return new Promise((resolve) => {
|
|
207
|
+
server.listen(
|
|
208
|
+
{
|
|
209
|
+
host,
|
|
210
|
+
port
|
|
211
|
+
},
|
|
212
|
+
async (err) => {
|
|
213
|
+
if (err) {
|
|
214
|
+
throw err;
|
|
215
|
+
}
|
|
216
|
+
(0, import_shared.debug)("listen dev server done");
|
|
217
|
+
await options.context.hooks.onAfterStartDevServerHook.call({ port });
|
|
218
|
+
resolve({
|
|
219
|
+
port,
|
|
220
|
+
urls: urls.map((item) => item.url),
|
|
221
|
+
server: {
|
|
222
|
+
close: () => {
|
|
223
|
+
server.close();
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
);
|
|
229
|
+
});
|
|
167
230
|
}
|
|
168
231
|
// Annotate the CommonJS export names for ESM import in node:
|
|
169
232
|
0 && (module.exports = {
|
|
170
233
|
RsbuildDevServer,
|
|
171
|
-
|
|
234
|
+
startDevServer
|
|
172
235
|
});
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { startDevServer } from './devServer';
|
|
2
2
|
export { startProdServer } from './prodServer';
|
package/dist/server/index.js
CHANGED
|
@@ -18,7 +18,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var server_exports = {};
|
|
20
20
|
__export(server_exports, {
|
|
21
|
-
|
|
21
|
+
startDevServer: () => import_devServer.startDevServer,
|
|
22
22
|
startProdServer: () => import_prodServer.startProdServer
|
|
23
23
|
});
|
|
24
24
|
module.exports = __toCommonJS(server_exports);
|
|
@@ -26,6 +26,6 @@ var import_devServer = require("./devServer");
|
|
|
26
26
|
var import_prodServer = require("./prodServer");
|
|
27
27
|
// Annotate the CommonJS export names for ESM import in node:
|
|
28
28
|
0 && (module.exports = {
|
|
29
|
-
|
|
29
|
+
startDevServer,
|
|
30
30
|
startProdServer
|
|
31
31
|
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var middlewares_exports = {};
|
|
20
|
+
__export(middlewares_exports, {
|
|
21
|
+
faviconFallbackMiddleware: () => faviconFallbackMiddleware
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(middlewares_exports);
|
|
24
|
+
const faviconFallbackMiddleware = (req, res, next) => {
|
|
25
|
+
if (req.url === "/favicon.ico") {
|
|
26
|
+
res.statusCode = 204;
|
|
27
|
+
res.end();
|
|
28
|
+
} else {
|
|
29
|
+
next();
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
33
|
+
0 && (module.exports = {
|
|
34
|
+
faviconFallbackMiddleware
|
|
35
|
+
});
|
|
@@ -18,6 +18,7 @@ export declare class RsbuildProdServer {
|
|
|
18
18
|
constructor(options: RsbuildProdServerOptions);
|
|
19
19
|
onInit(app: Server): Promise<void>;
|
|
20
20
|
private applyDefaultMiddlewares;
|
|
21
|
+
private applyStaticAssetMiddleware;
|
|
21
22
|
createHTTPServer(): Promise<Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>>;
|
|
22
23
|
listen(options?: number | ListenOptions | undefined, listener?: () => void): void;
|
|
23
24
|
close(): void;
|
|
@@ -37,6 +37,7 @@ var import_connect = __toESM(require("connect"));
|
|
|
37
37
|
var import_path = require("path");
|
|
38
38
|
var import_sirv = __toESM(require("sirv"));
|
|
39
39
|
var import_shared = require("@rsbuild/shared");
|
|
40
|
+
var import_middlewares = require("./middlewares");
|
|
40
41
|
class RsbuildProdServer {
|
|
41
42
|
constructor(options) {
|
|
42
43
|
this.middlewares = (0, import_connect.default)();
|
|
@@ -48,6 +49,10 @@ class RsbuildProdServer {
|
|
|
48
49
|
await this.applyDefaultMiddlewares();
|
|
49
50
|
}
|
|
50
51
|
async applyDefaultMiddlewares() {
|
|
52
|
+
this.applyStaticAssetMiddleware();
|
|
53
|
+
this.middlewares.use(import_middlewares.faviconFallbackMiddleware);
|
|
54
|
+
}
|
|
55
|
+
applyStaticAssetMiddleware() {
|
|
51
56
|
const {
|
|
52
57
|
output: { path, assetPrefix },
|
|
53
58
|
pwd
|
|
@@ -115,11 +120,9 @@ async function startProdServer(context, rsbuildConfig) {
|
|
|
115
120
|
port,
|
|
116
121
|
urls: urls.map((item) => item.url),
|
|
117
122
|
server: {
|
|
118
|
-
middlewares: server.middlewares,
|
|
119
123
|
close: () => {
|
|
120
124
|
server.close();
|
|
121
125
|
}
|
|
122
|
-
// TODO: decouple with Modern.js server
|
|
123
126
|
}
|
|
124
127
|
});
|
|
125
128
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import http from 'http';
|
|
2
|
+
import { RequestHandler } from 'http-proxy-middleware';
|
|
3
|
+
import { ProxyDetail, RequestHandler as Middleware, RsbuildProxyOptions } from '@rsbuild/shared';
|
|
4
|
+
export declare function formatProxyOptions(proxyOptions: RsbuildProxyOptions): ProxyDetail[];
|
|
5
|
+
export type HttpUpgradeHandler = NonNullable<RequestHandler['upgrade']>;
|
|
6
|
+
export declare const createProxyMiddleware: (proxyOptions: RsbuildProxyOptions) => {
|
|
7
|
+
middlewares: Middleware[];
|
|
8
|
+
handleUpgrade: (server: http.Server) => void;
|
|
9
|
+
};
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var proxy_exports = {};
|
|
20
|
+
__export(proxy_exports, {
|
|
21
|
+
createProxyMiddleware: () => createProxyMiddleware,
|
|
22
|
+
formatProxyOptions: () => formatProxyOptions
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(proxy_exports);
|
|
25
|
+
var import_http_proxy_middleware2 = require("http-proxy-middleware/dist/http-proxy-middleware");
|
|
26
|
+
function formatProxyOptions(proxyOptions) {
|
|
27
|
+
var _a;
|
|
28
|
+
const ret = [];
|
|
29
|
+
if (Array.isArray(proxyOptions)) {
|
|
30
|
+
ret.push(...proxyOptions);
|
|
31
|
+
} else if ("target" in proxyOptions) {
|
|
32
|
+
ret.push(proxyOptions);
|
|
33
|
+
} else {
|
|
34
|
+
for (const [context, options] of Object.entries(proxyOptions)) {
|
|
35
|
+
const opts = {
|
|
36
|
+
context,
|
|
37
|
+
changeOrigin: true,
|
|
38
|
+
logLevel: "warn"
|
|
39
|
+
};
|
|
40
|
+
if (typeof options === "string") {
|
|
41
|
+
opts.target = options;
|
|
42
|
+
} else {
|
|
43
|
+
Object.assign(opts, options);
|
|
44
|
+
}
|
|
45
|
+
ret.push(opts);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const handleError = (err, _req, _res, _target) => {
|
|
49
|
+
console.error(err);
|
|
50
|
+
};
|
|
51
|
+
for (const opts of ret) {
|
|
52
|
+
(_a = opts.onError) != null ? _a : opts.onError = handleError;
|
|
53
|
+
}
|
|
54
|
+
return ret;
|
|
55
|
+
}
|
|
56
|
+
const createProxyMiddleware = (proxyOptions) => {
|
|
57
|
+
const formattedOptionsList = formatProxyOptions(proxyOptions);
|
|
58
|
+
const proxies = [];
|
|
59
|
+
const middlewares = [];
|
|
60
|
+
for (const opts of formattedOptionsList) {
|
|
61
|
+
const proxy = new import_http_proxy_middleware2.HttpProxyMiddleware(opts.context, opts);
|
|
62
|
+
const middleware = async (req, res, next) => {
|
|
63
|
+
const bypassUrl = typeof opts.bypass === "function" ? opts.bypass(req, res, opts) : null;
|
|
64
|
+
if (typeof bypassUrl === "boolean") {
|
|
65
|
+
res.statusCode = 404;
|
|
66
|
+
next();
|
|
67
|
+
} else if (typeof bypassUrl === "string") {
|
|
68
|
+
req.url = bypassUrl;
|
|
69
|
+
next();
|
|
70
|
+
} else {
|
|
71
|
+
proxy.middleware(req, res, next);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
proxies.push(proxy);
|
|
75
|
+
middlewares.push(middleware);
|
|
76
|
+
}
|
|
77
|
+
const handleUpgrade = (server) => {
|
|
78
|
+
for (const proxy of proxies) {
|
|
79
|
+
const raw = proxy;
|
|
80
|
+
if (raw.proxyOptions.ws === true && !raw.wsInternalSubscribed) {
|
|
81
|
+
server.on("upgrade", raw.handleUpgrade);
|
|
82
|
+
raw.wsInternalSubscribed = true;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
return { middlewares, handleUpgrade };
|
|
87
|
+
};
|
|
88
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
89
|
+
0 && (module.exports = {
|
|
90
|
+
createProxyMiddleware,
|
|
91
|
+
formatProxyOptions
|
|
92
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rsbuild/core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.19",
|
|
4
4
|
"description": "Unleash the power of Rspack with the out-of-the-box build tool.",
|
|
5
5
|
"homepage": "https://rsbuild.dev",
|
|
6
6
|
"bugs": {
|
|
@@ -88,6 +88,7 @@
|
|
|
88
88
|
"gzip-size": "^6.0.0",
|
|
89
89
|
"html-webpack-plugin": "5.5.3",
|
|
90
90
|
"http-compression": "1.0.6",
|
|
91
|
+
"http-proxy-middleware": "^2.0.1",
|
|
91
92
|
"jiti": "^1.20.0",
|
|
92
93
|
"lodash": "^4.17.21",
|
|
93
94
|
"open": "^8.4.0",
|
|
@@ -97,7 +98,7 @@
|
|
|
97
98
|
"sirv": "^2.0.3",
|
|
98
99
|
"strip-ansi": "^6.0.1",
|
|
99
100
|
"ws": "^8.2.0",
|
|
100
|
-
"@rsbuild/shared": "0.0.
|
|
101
|
+
"@rsbuild/shared": "0.0.19"
|
|
101
102
|
},
|
|
102
103
|
"devDependencies": {
|
|
103
104
|
"@types/connect": "3.4.35",
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { StartDevServerOptions, type RspackCompiler, type RspackMultiCompiler } from '@rsbuild/shared';
|
|
2
|
-
import { type InitConfigsOptions } from './initConfigs';
|
|
3
|
-
type ServerOptions = Exclude<StartDevServerOptions['serverOptions'], undefined>;
|
|
4
|
-
export declare function createDevServer(options: InitConfigsOptions, port: number, serverOptions: ServerOptions, customCompiler?: RspackCompiler | RspackMultiCompiler): Promise<import("@rsbuild/shared").ServerApi>;
|
|
5
|
-
export {};
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var startDevServer_exports = {};
|
|
20
|
-
__export(startDevServer_exports, {
|
|
21
|
-
createDevServer: () => createDevServer
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(startDevServer_exports);
|
|
24
|
-
var import_shared = require("@rsbuild/shared");
|
|
25
|
-
var import_createCompiler = require("./createCompiler");
|
|
26
|
-
var import_devMiddleware = require("./devMiddleware");
|
|
27
|
-
var import_initConfigs = require("./initConfigs");
|
|
28
|
-
var import_server = require("../../server");
|
|
29
|
-
async function createDevServer(options, port, serverOptions, customCompiler) {
|
|
30
|
-
let compiler;
|
|
31
|
-
if (customCompiler) {
|
|
32
|
-
compiler = customCompiler;
|
|
33
|
-
} else {
|
|
34
|
-
const { rspackConfigs } = await (0, import_initConfigs.initConfigs)(options);
|
|
35
|
-
compiler = await (0, import_createCompiler.createCompiler)({
|
|
36
|
-
context: options.context,
|
|
37
|
-
rspackConfigs
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
(0, import_shared.debug)("create dev server");
|
|
41
|
-
const rsbuildConfig = options.context.config;
|
|
42
|
-
const { devConfig } = await (0, import_shared.getDevServerOptions)({
|
|
43
|
-
rsbuildConfig,
|
|
44
|
-
serverOptions,
|
|
45
|
-
port
|
|
46
|
-
});
|
|
47
|
-
const server = await (0, import_server.createDevServer)({
|
|
48
|
-
pwd: options.context.rootPath,
|
|
49
|
-
devMiddleware: (0, import_devMiddleware.getDevMiddleware)(compiler),
|
|
50
|
-
...serverOptions,
|
|
51
|
-
dev: devConfig
|
|
52
|
-
});
|
|
53
|
-
(0, import_shared.debug)("create dev server done");
|
|
54
|
-
return server;
|
|
55
|
-
}
|
|
56
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
57
|
-
0 && (module.exports = {
|
|
58
|
-
createDevServer
|
|
59
|
-
});
|