@rsbuild/core 0.1.9 → 0.2.0

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.
Files changed (92) hide show
  1. package/dist/cli/commands.js +6 -3
  2. package/dist/cli/config.d.ts +7 -1
  3. package/dist/cli/config.js +6 -3
  4. package/dist/cli/prepare.js +1 -1
  5. package/dist/createRsbuild.js +2 -1
  6. package/dist/index.d.ts +1 -1
  7. package/dist/index.js +2 -0
  8. package/dist/loadEnv.d.ts +2 -2
  9. package/dist/loadEnv.js +2 -2
  10. package/dist/plugins/asset.js +2 -2
  11. package/dist/plugins/basic.d.ts +5 -0
  12. package/dist/plugins/basic.js +68 -0
  13. package/dist/plugins/html.d.ts +1 -2
  14. package/dist/plugins/html.js +8 -8
  15. package/dist/plugins/index.js +2 -3
  16. package/dist/plugins/inlineChunk.js +25 -28
  17. package/dist/plugins/networkPerformance.js +3 -11
  18. package/dist/plugins/nodeAddons.js +1 -1
  19. package/dist/plugins/preloadOrPrefetch.js +4 -10
  20. package/dist/plugins/wasm.js +1 -1
  21. package/dist/provider/core/createCompiler.js +15 -7
  22. package/dist/provider/core/createContext.d.ts +3 -3
  23. package/dist/provider/core/createContext.js +13 -27
  24. package/dist/provider/core/initConfigs.d.ts +2 -2
  25. package/dist/provider/core/initConfigs.js +4 -3
  26. package/dist/provider/core/initPlugins.js +15 -12
  27. package/dist/provider/core/inspectConfig.d.ts +2 -20
  28. package/dist/provider/core/inspectConfig.js +6 -6
  29. package/dist/provider/css-modules-typescript-pre-loader/index.js +1 -1
  30. package/dist/provider/css-modules-typescript-pre-loader/{postcss-icss-extract-plugin.js → postcssIcssExtractPlugin.js} +5 -5
  31. package/dist/provider/index.d.ts +1 -2
  32. package/dist/provider/index.js +4 -7
  33. package/dist/provider/plugins/css.js +3 -7
  34. package/dist/provider/plugins/less.js +1 -1
  35. package/dist/provider/plugins/output.js +2 -2
  36. package/dist/provider/plugins/resolve.js +0 -5
  37. package/dist/provider/plugins/server.d.ts +2 -0
  38. package/dist/provider/plugins/server.js +70 -0
  39. package/dist/provider/plugins/swc.js +1 -1
  40. package/dist/provider/provider.js +15 -1
  41. package/dist/provider/shared.d.ts +1 -2
  42. package/dist/provider/shared.js +2 -15
  43. package/dist/rspack/HtmlAppIconPlugin.d.ts +0 -3
  44. package/dist/rspack/HtmlAppIconPlugin.js +2 -2
  45. package/dist/rspack/HtmlBasicPlugin.d.ts +0 -3
  46. package/dist/rspack/HtmlBasicPlugin.js +24 -10
  47. package/dist/rspack/HtmlCrossOriginPlugin.d.ts +0 -3
  48. package/dist/rspack/HtmlCrossOriginPlugin.js +12 -2
  49. package/dist/rspack/HtmlNetworkPerformancePlugin.d.ts +1 -3
  50. package/dist/rspack/HtmlNetworkPerformancePlugin.js +13 -3
  51. package/dist/rspack/HtmlNoncePlugin.d.ts +0 -3
  52. package/dist/rspack/HtmlNoncePlugin.js +12 -2
  53. package/dist/rspack/HtmlTagsPlugin.d.ts +1 -7
  54. package/dist/rspack/HtmlTagsPlugin.js +12 -1
  55. package/dist/rspack/InlineChunkHtmlPlugin.d.ts +2 -3
  56. package/dist/rspack/InlineChunkHtmlPlugin.js +17 -3
  57. package/dist/rspack/RemoveCssSourcemapPlugin.d.ts +1 -3
  58. package/dist/rspack/RemoveCssSourcemapPlugin.js +1 -2
  59. package/dist/rspack/{HtmlPreloadOrPrefetchPlugin/index.d.ts → preload/HtmlPreloadOrPrefetchPlugin.d.ts} +3 -4
  60. package/dist/rspack/{HtmlPreloadOrPrefetchPlugin/index.js → preload/HtmlPreloadOrPrefetchPlugin.js} +17 -7
  61. package/dist/server/{dev-middleware → compiler-dev-middleware}/index.d.ts +2 -2
  62. package/dist/server/{dev-middleware → compiler-dev-middleware}/index.js +3 -3
  63. package/dist/server/{dev-middleware → compiler-dev-middleware}/socketServer.d.ts +2 -2
  64. package/dist/server/devMiddlewares.d.ts +7 -0
  65. package/dist/server/devMiddlewares.js +156 -0
  66. package/dist/server/devServer.d.ts +10 -23
  67. package/dist/server/devServer.js +77 -162
  68. package/dist/server/httpServer.d.ts +8 -0
  69. package/dist/server/httpServer.js +48 -0
  70. package/dist/server/index.d.ts +1 -1
  71. package/dist/server/index.js +2 -0
  72. package/dist/server/prodServer.d.ts +0 -5
  73. package/dist/server/prodServer.js +11 -25
  74. package/package.json +4 -4
  75. package/dist/plugins/devtool.d.ts +0 -2
  76. package/dist/plugins/devtool.js +0 -46
  77. package/dist/plugins/server.d.ts +0 -2
  78. package/dist/plugins/server.js +0 -56
  79. package/dist/provider/plugins/basic.d.ts +0 -5
  80. package/dist/provider/plugins/basic.js +0 -34
  81. /package/dist/provider/css-modules-typescript-pre-loader/{postcss-icss-extract-plugin.d.ts → postcssIcssExtractPlugin.d.ts} +0 -0
  82. /package/dist/rspack/{HtmlPreloadOrPrefetchPlugin → preload}/helpers/determineAsValue.d.ts +0 -0
  83. /package/dist/rspack/{HtmlPreloadOrPrefetchPlugin → preload}/helpers/determineAsValue.js +0 -0
  84. /package/dist/rspack/{HtmlPreloadOrPrefetchPlugin → preload}/helpers/doesChunkBelongToHtml.d.ts +0 -0
  85. /package/dist/rspack/{HtmlPreloadOrPrefetchPlugin → preload}/helpers/doesChunkBelongToHtml.js +0 -0
  86. /package/dist/rspack/{HtmlPreloadOrPrefetchPlugin → preload}/helpers/extractChunks.d.ts +0 -0
  87. /package/dist/rspack/{HtmlPreloadOrPrefetchPlugin → preload}/helpers/extractChunks.js +0 -0
  88. /package/dist/rspack/{HtmlPreloadOrPrefetchPlugin → preload}/helpers/index.d.ts +0 -0
  89. /package/dist/rspack/{HtmlPreloadOrPrefetchPlugin → preload}/helpers/index.js +0 -0
  90. /package/dist/rspack/{HtmlPreloadOrPrefetchPlugin → preload}/helpers/type.d.ts +0 -0
  91. /package/dist/rspack/{HtmlPreloadOrPrefetchPlugin → preload}/helpers/type.js +0 -0
  92. /package/dist/server/{dev-middleware → compiler-dev-middleware}/socketServer.js +0 -0
@@ -1,30 +1,17 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- /// <reference types="node" />
4
- import { Server } from 'http';
5
- import type { ListenOptions } from 'net';
6
- import { RsbuildDevServerOptions, CreateDevMiddlewareReturns, StartDevServerOptions, StartServerResult } from '@rsbuild/shared';
7
- import connect from '@rsbuild/shared/connect';
1
+ import { CreateDevMiddlewareReturns, StartDevServerOptions, StartServerResult, DevServerAPI } from '@rsbuild/shared';
8
2
  import type { Context } from '../types';
9
- export declare class RsbuildDevServer {
10
- private readonly dev;
11
- private readonly devMiddleware;
12
- private pwd;
13
- private app;
14
- private output;
15
- middlewares: connect.Server;
16
- constructor(options: RsbuildDevServerOptions);
17
- private applySetupMiddlewares;
18
- onInit(app: Server): Promise<void>;
19
- private applyDefaultMiddlewares;
20
- createHTTPServer(): Promise<Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse> | import("https").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>>;
21
- listen(options?: number | ListenOptions | undefined, listener?: (err?: Error) => Promise<void>): void;
22
- close(): void;
23
- }
24
- export declare function startDevServer<Options extends {
3
+ export declare function createDevServer<Options extends {
25
4
  context: Context;
26
5
  }>(options: Options, createDevMiddleware: (options: Options, compiler: StartDevServerOptions['compiler']) => Promise<CreateDevMiddlewareReturns>, {
27
6
  compiler: customCompiler,
7
+ getPortSilently
8
+ }?: StartDevServerOptions & {
9
+ defaultPort?: number;
10
+ }): Promise<DevServerAPI>;
11
+ export declare function startDevServer<Options extends {
12
+ context: Context;
13
+ }>(options: Options, createDevMiddleware: (options: Options, compiler: StartDevServerOptions['compiler']) => Promise<CreateDevMiddlewareReturns>, {
14
+ compiler,
28
15
  printURLs,
29
16
  logger: customLogger,
30
17
  getPortSilently
@@ -28,189 +28,96 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var devServer_exports = {};
30
30
  __export(devServer_exports, {
31
- RsbuildDevServer: () => RsbuildDevServer,
31
+ createDevServer: () => createDevServer,
32
32
  startDevServer: () => startDevServer
33
33
  });
34
34
  module.exports = __toCommonJS(devServer_exports);
35
- var import_http = require("http");
36
- var import_https = require("https");
37
- var import_url = __toESM(require("url"));
38
35
  var import_shared = require("@rsbuild/shared");
39
- var import_dev_middleware = __toESM(require("./dev-middleware"));
40
36
  var import_connect = __toESM(require("@rsbuild/shared/connect"));
41
- var import_middlewares = require("./middlewares");
42
- var import_path = require("path");
43
37
  var import_restart = require("./restart");
44
- class RsbuildDevServer {
45
- constructor(options) {
46
- this.middlewares = (0, import_connect.default)();
47
- this.pwd = options.pwd;
48
- this.dev = options.dev;
49
- this.output = options.output;
50
- this.devMiddleware = new import_dev_middleware.default({
51
- dev: this.dev,
52
- publicPaths: options.output.publicPaths,
53
- devMiddleware: options.devMiddleware
54
- });
55
- }
56
- applySetupMiddlewares() {
57
- const setupMiddlewares = this.dev.setupMiddlewares || [];
58
- const serverOptions = {
59
- sockWrite: (type, data) => this.devMiddleware.sockWrite(type, data)
60
- };
61
- const before = [];
62
- const after = [];
63
- setupMiddlewares.forEach((handler) => {
64
- handler(
65
- {
66
- unshift: (...handlers) => before.unshift(...handlers),
67
- push: (...handlers) => after.push(...handlers)
68
- },
69
- serverOptions
70
- );
71
- });
72
- return { before, after };
73
- }
74
- // Complete the preparation of services
75
- async onInit(app) {
76
- this.app = app;
77
- const { before, after } = this.applySetupMiddlewares();
78
- before.forEach((fn) => this.middlewares.use(fn));
79
- await this.applyDefaultMiddlewares(app);
80
- after.forEach((fn) => this.middlewares.use(fn));
81
- }
82
- async applyDefaultMiddlewares(app) {
83
- const { dev, devMiddleware } = this;
84
- if (dev.compress) {
85
- const { default: compression } = await Promise.resolve().then(() => __toESM(require("../../compiled/http-compression")));
86
- this.middlewares.use((req, res, next) => {
87
- compression({
88
- gzip: true,
89
- brotli: false
90
- })(req, res, next);
91
- });
92
- }
93
- this.middlewares.use((req, res, next) => {
94
- res.setHeader("Access-Control-Allow-Origin", "*");
95
- const path = req.url ? import_url.default.parse(req.url).pathname : "";
96
- if (path?.includes("hot-update")) {
97
- res.setHeader("Access-Control-Allow-Credentials", "false");
98
- }
99
- const confHeaders = dev.headers;
100
- if (confHeaders) {
101
- for (const [key, value] of Object.entries(confHeaders)) {
102
- res.setHeader(key, value);
103
- }
104
- }
105
- next();
106
- });
107
- if (dev.proxy) {
108
- const { createProxyMiddleware } = await Promise.resolve().then(() => __toESM(require("./proxy")));
109
- const { middlewares } = createProxyMiddleware(dev.proxy, app);
110
- middlewares.forEach((middleware) => {
111
- this.middlewares.use(middleware);
112
- });
113
- }
114
- devMiddleware.init(app);
115
- devMiddleware.middleware && this.middlewares.use(devMiddleware.middleware);
116
- if (dev.publicDir && dev.publicDir.name) {
117
- const { default: sirv } = await Promise.resolve().then(() => __toESM(require("../../compiled/sirv")));
118
- const { name } = dev.publicDir;
119
- const publicDir = (0, import_path.isAbsolute)(name) ? name : (0, import_path.join)(this.pwd, name);
120
- const assetMiddleware = sirv(publicDir, {
121
- etag: true,
122
- dev: true
123
- });
124
- this.middlewares.use(assetMiddleware);
125
- }
126
- const { distPath } = this.output;
127
- this.middlewares.use(
128
- (0, import_middlewares.getHtmlFallbackMiddleware)({
129
- distPath: (0, import_path.isAbsolute)(distPath) ? distPath : (0, import_path.join)(this.pwd, distPath),
130
- callback: devMiddleware.middleware,
131
- htmlFallback: this.dev.htmlFallback
132
- })
133
- );
134
- if (dev.historyApiFallback) {
135
- const { default: connectHistoryApiFallback } = await Promise.resolve().then(() => __toESM(require("../../compiled/connect-history-api-fallback")));
136
- const historyApiFallbackMiddleware = connectHistoryApiFallback(
137
- dev.historyApiFallback === true ? {} : dev.historyApiFallback
138
- );
139
- this.middlewares.use(historyApiFallbackMiddleware);
140
- devMiddleware.middleware && this.middlewares.use(devMiddleware.middleware);
141
- }
142
- this.middlewares.use(import_middlewares.faviconFallbackMiddleware);
143
- this.middlewares.use(import_middlewares.notFoundMiddleware);
144
- }
145
- async createHTTPServer() {
146
- const { dev } = this;
147
- const devHttpsOption = typeof dev === "object" && dev.https;
148
- if (devHttpsOption) {
149
- return (0, import_https.createServer)(devHttpsOption, this.middlewares);
150
- } else {
151
- return (0, import_http.createServer)(this.middlewares);
152
- }
153
- }
154
- listen(options, listener) {
155
- const callback = () => {
156
- listener?.();
157
- };
158
- if (typeof options === "object") {
159
- this.app.listen(options, callback);
160
- } else {
161
- this.app.listen(options || 8080, callback);
162
- }
163
- }
164
- close() {
165
- this.devMiddleware.close();
166
- this.app.close();
167
- }
168
- }
169
- async function startDevServer(options, createDevMiddleware, {
38
+ var import_httpServer = require("./httpServer");
39
+ var import_devMiddlewares = require("./devMiddlewares");
40
+ async function createDevServer(options, createDevMiddleware, {
170
41
  compiler: customCompiler,
171
- printURLs = true,
172
- logger: customLogger,
173
42
  getPortSilently
174
43
  } = {}) {
175
44
  if (!process.env.NODE_ENV) {
176
45
  process.env.NODE_ENV = "development";
177
46
  }
178
47
  const rsbuildConfig = options.context.config;
179
- const logger = customLogger ?? import_shared.logger;
180
48
  const { devServerConfig, port, host, https } = await (0, import_shared.getDevOptions)({
181
49
  rsbuildConfig,
182
50
  getPortSilently
183
51
  });
52
+ const defaultRoutes = (0, import_shared.formatRoutes)(
53
+ options.context.entry,
54
+ rsbuildConfig.output?.distPath?.html,
55
+ rsbuildConfig.html?.outputStructure
56
+ );
184
57
  options.context.devServer = {
185
58
  hostname: host,
186
59
  port,
187
60
  https
188
61
  };
189
- const protocol = https ? "https" : "http";
190
- let urls = (0, import_shared.getAddressUrls)(protocol, port, host);
191
- const routes = (0, import_shared.formatRoutes)(
192
- options.context.entry,
193
- rsbuildConfig.output?.distPath?.html,
194
- rsbuildConfig.html?.outputStructure
195
- );
196
- (0, import_shared.debug)("create dev server");
197
62
  const { devMiddleware, compiler } = await createDevMiddleware(
198
63
  options,
199
64
  customCompiler
200
65
  );
201
66
  const publicPaths = compiler.compilers ? compiler.compilers.map(import_shared.getPublicPathFromCompiler) : [(0, import_shared.getPublicPathFromCompiler)(compiler)];
202
- const server = new RsbuildDevServer({
203
- pwd: options.context.rootPath,
204
- devMiddleware,
205
- dev: devServerConfig,
206
- output: {
207
- distPath: rsbuildConfig.output?.distPath?.root || import_shared.ROOT_DIST_DIR,
208
- publicPaths
209
- }
67
+ return {
68
+ resolvedConfig: { devServerConfig, port, host, https, defaultRoutes },
69
+ beforeStart: async () => {
70
+ await options.context.hooks.onBeforeStartDevServerHook.call();
71
+ },
72
+ afterStart: async ({ port: port2, routes }) => {
73
+ await options.context.hooks.onAfterStartDevServerHook.call({
74
+ port: port2,
75
+ routes
76
+ });
77
+ },
78
+ getMiddlewares: async ({
79
+ dev,
80
+ app
81
+ }) => await (0, import_devMiddlewares.getMiddlewares)(
82
+ {
83
+ pwd: options.context.rootPath,
84
+ devMiddleware,
85
+ dev,
86
+ output: {
87
+ distPath: rsbuildConfig.output?.distPath?.root || import_shared.ROOT_DIST_DIR,
88
+ publicPaths
89
+ }
90
+ },
91
+ app
92
+ )
93
+ };
94
+ }
95
+ async function startDevServer(options, createDevMiddleware, {
96
+ compiler,
97
+ printURLs = true,
98
+ logger: customLogger,
99
+ getPortSilently
100
+ } = {}) {
101
+ (0, import_shared.debug)("create dev server");
102
+ const rsbuildServer = await createDevServer(options, createDevMiddleware, {
103
+ compiler,
104
+ printURLs,
105
+ logger: customLogger,
106
+ getPortSilently
107
+ });
108
+ const {
109
+ resolvedConfig: { devServerConfig, port, host, https, defaultRoutes }
110
+ } = rsbuildServer;
111
+ const logger = customLogger ?? import_shared.logger;
112
+ const middlewares = (0, import_connect.default)();
113
+ const httpServer = await (0, import_httpServer.createHttpServer)({
114
+ https: devServerConfig.https,
115
+ middlewares
210
116
  });
211
117
  (0, import_shared.debug)("create dev server done");
212
- await options.context.hooks.onBeforeStartDevServerHook.call();
213
- const httpServer = await server.createHTTPServer();
118
+ await rsbuildServer.beforeStart();
119
+ const protocol = https ? "https" : "http";
120
+ let urls = (0, import_shared.getAddressUrls)(protocol, port, host);
214
121
  if (printURLs) {
215
122
  if ((0, import_shared.isFunction)(printURLs)) {
216
123
  urls = printURLs(urls);
@@ -218,12 +125,16 @@ async function startDevServer(options, createDevMiddleware, {
218
125
  throw new Error("Please return an array in the `printURLs` function.");
219
126
  }
220
127
  }
221
- (0, import_shared.printServerURLs)(urls, routes, logger);
128
+ (0, import_shared.printServerURLs)(urls, defaultRoutes, logger);
222
129
  }
223
- await server.onInit(httpServer);
130
+ const devMiddlewares = await rsbuildServer.getMiddlewares({
131
+ dev: devServerConfig,
132
+ app: httpServer
133
+ });
134
+ devMiddlewares.middlewares.forEach((m) => middlewares.use(m));
224
135
  (0, import_shared.debug)("listen dev server");
225
136
  return new Promise((resolve) => {
226
- server.listen(
137
+ httpServer.listen(
227
138
  {
228
139
  host,
229
140
  port
@@ -233,17 +144,21 @@ async function startDevServer(options, createDevMiddleware, {
233
144
  throw err;
234
145
  }
235
146
  (0, import_shared.debug)("listen dev server done");
236
- await options.context.hooks.onAfterStartDevServerHook.call({
147
+ await rsbuildServer.afterStart({
237
148
  port,
238
- routes
149
+ routes: defaultRoutes
239
150
  });
240
- (0, import_restart.registerCleaner)(() => server.close());
151
+ const onClose = async () => {
152
+ await devMiddlewares.close();
153
+ httpServer.close();
154
+ };
155
+ (0, import_restart.registerCleaner)(onClose);
241
156
  resolve({
242
157
  port,
243
158
  urls: urls.map((item) => item.url),
244
159
  server: {
245
160
  close: async () => {
246
- server.close();
161
+ await onClose();
247
162
  }
248
163
  }
249
164
  });
@@ -253,6 +168,6 @@ async function startDevServer(options, createDevMiddleware, {
253
168
  }
254
169
  // Annotate the CommonJS export names for ESM import in node:
255
170
  0 && (module.exports = {
256
- RsbuildDevServer,
171
+ createDevServer,
257
172
  startDevServer
258
173
  });
@@ -0,0 +1,8 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import type { ServerConfig } from '@rsbuild/shared';
4
+ import type connect from '@rsbuild/shared/connect';
5
+ export declare const createHttpServer: (options: {
6
+ https?: ServerConfig['https'];
7
+ middlewares: connect.Server;
8
+ }) => Promise<import("https").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse> | import("http").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>>;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var httpServer_exports = {};
30
+ __export(httpServer_exports, {
31
+ createHttpServer: () => createHttpServer
32
+ });
33
+ module.exports = __toCommonJS(httpServer_exports);
34
+ const createHttpServer = async (options) => {
35
+ let app;
36
+ if (options.https) {
37
+ const { createServer } = await Promise.resolve().then(() => __toESM(require("https")));
38
+ app = createServer(options.https, options.middlewares);
39
+ } else {
40
+ const { createServer } = await Promise.resolve().then(() => __toESM(require("http")));
41
+ app = createServer(options.middlewares);
42
+ }
43
+ return app;
44
+ };
45
+ // Annotate the CommonJS export names for ESM import in node:
46
+ 0 && (module.exports = {
47
+ createHttpServer
48
+ });
@@ -1,2 +1,2 @@
1
- export { startDevServer } from './devServer';
1
+ export { startDevServer, createDevServer } from './devServer';
2
2
  export { startProdServer } from './prodServer';
@@ -18,6 +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
+ createDevServer: () => import_devServer.createDevServer,
21
22
  startDevServer: () => import_devServer.startDevServer,
22
23
  startProdServer: () => import_prodServer.startProdServer
23
24
  });
@@ -26,6 +27,7 @@ var import_devServer = require("./devServer");
26
27
  var import_prodServer = require("./prodServer");
27
28
  // Annotate the CommonJS export names for ESM import in node:
28
29
  0 && (module.exports = {
30
+ createDevServer,
29
31
  startDevServer,
30
32
  startProdServer
31
33
  });
@@ -1,7 +1,4 @@
1
1
  /// <reference types="node" />
2
- /// <reference types="node" />
3
- /// <reference types="node" />
4
- import type { ListenOptions } from 'net';
5
2
  import { Server } from 'http';
6
3
  import connect from '@rsbuild/shared/connect';
7
4
  import { type ServerConfig, type RsbuildConfig, type StartServerResult, type PreviewServerOptions } from '@rsbuild/shared';
@@ -22,8 +19,6 @@ export declare class RsbuildProdServer {
22
19
  onInit(app: Server): Promise<void>;
23
20
  private applyDefaultMiddlewares;
24
21
  private applyStaticAssetMiddleware;
25
- createHTTPServer(): Promise<Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse> | import("https").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>>;
26
- listen(options?: number | ListenOptions | undefined, listener?: () => Promise<void>): void;
27
22
  close(): void;
28
23
  }
29
24
  export declare function startProdServer(context: Context, rsbuildConfig: RsbuildConfig, {
@@ -32,13 +32,12 @@ __export(prodServer_exports, {
32
32
  startProdServer: () => startProdServer
33
33
  });
34
34
  module.exports = __toCommonJS(prodServer_exports);
35
- var import_http = require("http");
36
- var import_https = require("https");
37
35
  var import_connect = __toESM(require("@rsbuild/shared/connect"));
38
36
  var import_path = require("path");
39
37
  var import_sirv = __toESM(require("../../compiled/sirv"));
40
38
  var import_shared = require("@rsbuild/shared");
41
39
  var import_middlewares = require("./middlewares");
40
+ var import_httpServer = require("./httpServer");
42
41
  class RsbuildProdServer {
43
42
  constructor(options) {
44
43
  this.middlewares = (0, import_connect.default)();
@@ -111,27 +110,7 @@ class RsbuildProdServer {
111
110
  }
112
111
  });
113
112
  }
114
- async createHTTPServer() {
115
- const { serverConfig } = this.options;
116
- const httpsOption = serverConfig.https;
117
- if (httpsOption) {
118
- return (0, import_https.createServer)(httpsOption, this.middlewares);
119
- } else {
120
- return (0, import_http.createServer)(this.middlewares);
121
- }
122
- }
123
- listen(options, listener) {
124
- const callback = () => {
125
- listener?.();
126
- };
127
- if (typeof options === "object") {
128
- this.app.listen(options, callback);
129
- } else {
130
- this.app.listen(options || 8080, callback);
131
- }
132
- }
133
113
  close() {
134
- this.app.close();
135
114
  }
136
115
  }
137
116
  async function startProdServer(context, rsbuildConfig, { printURLs = true, getPortSilently } = {}) {
@@ -151,10 +130,13 @@ async function startProdServer(context, rsbuildConfig, { printURLs = true, getPo
151
130
  serverConfig
152
131
  });
153
132
  await context.hooks.onBeforeStartProdServerHook.call();
154
- const httpServer = await server.createHTTPServer();
133
+ const httpServer = await (0, import_httpServer.createHttpServer)({
134
+ https: serverConfig.https,
135
+ middlewares: server.middlewares
136
+ });
155
137
  await server.onInit(httpServer);
156
138
  return new Promise((resolve) => {
157
- server.listen(
139
+ httpServer.listen(
158
140
  {
159
141
  host,
160
142
  port
@@ -176,12 +158,16 @@ async function startProdServer(context, rsbuildConfig, { printURLs = true, getPo
176
158
  routes
177
159
  );
178
160
  }
161
+ const onClose = () => {
162
+ server.close();
163
+ httpServer.close();
164
+ };
179
165
  resolve({
180
166
  port,
181
167
  urls: urls.map((item) => item.url),
182
168
  server: {
183
169
  close: async () => {
184
- server.close();
170
+ onClose();
185
171
  }
186
172
  }
187
173
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsbuild/core",
3
- "version": "0.1.9",
3
+ "version": "0.2.0",
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": {
@@ -56,14 +56,14 @@
56
56
  "types.d.ts"
57
57
  ],
58
58
  "dependencies": {
59
- "@rspack/core": "0.4.1",
59
+ "@rspack/core": "0.4.2",
60
60
  "core-js": "~3.32.2",
61
61
  "html-webpack-plugin": "npm:html-rspack-plugin@5.5.7",
62
62
  "postcss": "8.4.31",
63
- "@rsbuild/shared": "0.1.9"
63
+ "@rsbuild/shared": "0.2.0"
64
64
  },
65
65
  "devDependencies": {
66
- "@types/node": "^16",
66
+ "@types/node": "16.x",
67
67
  "typescript": "^5.3.0",
68
68
  "webpack": "^5.89.0"
69
69
  },
@@ -1,2 +0,0 @@
1
- import type { RsbuildPlugin } from '../types';
2
- export declare const pluginDevtool: () => RsbuildPlugin;
@@ -1,46 +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 devtool_exports = {};
20
- __export(devtool_exports, {
21
- pluginDevtool: () => pluginDevtool
22
- });
23
- module.exports = __toCommonJS(devtool_exports);
24
- var import_shared = require("@rsbuild/shared");
25
- const pluginDevtool = () => ({
26
- name: "rsbuild:devtool",
27
- setup(api) {
28
- api.modifyBundlerChain((chain, { isProd, isServer }) => {
29
- const config = api.getNormalizedConfig();
30
- if (!(0, import_shared.isUseJsSourceMap)(config)) {
31
- chain.devtool(false);
32
- } else {
33
- const prodDevTool = isServer ? "source-map" : "hidden-source-map";
34
- const devtool = isProd ? (
35
- // hide the source map URL in production to avoid Chrome warning
36
- prodDevTool
37
- ) : "cheap-module-source-map";
38
- chain.devtool(devtool);
39
- }
40
- });
41
- }
42
- });
43
- // Annotate the CommonJS export names for ESM import in node:
44
- 0 && (module.exports = {
45
- pluginDevtool
46
- });
@@ -1,2 +0,0 @@
1
- import type { RsbuildPlugin } from '../types';
2
- export declare const pluginServer: () => RsbuildPlugin;
@@ -1,56 +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 server_exports = {};
20
- __export(server_exports, {
21
- pluginServer: () => pluginServer
22
- });
23
- module.exports = __toCommonJS(server_exports);
24
- var import_shared = require("@rsbuild/shared");
25
- const pluginServer = () => ({
26
- name: "rsbuild:server",
27
- setup(api) {
28
- api.modifyRsbuildConfig((rsbuildConfig, { mergeRsbuildConfig }) => {
29
- if ((0, import_shared.isProd)() && rsbuildConfig.server?.publicDir) {
30
- const { name, copyOnBuild } = rsbuildConfig.server?.publicDir;
31
- if (!copyOnBuild || !name) {
32
- return;
33
- }
34
- const { copy } = rsbuildConfig.output || {};
35
- const publicPattern = [
36
- {
37
- from: name,
38
- to: "",
39
- noErrorOnMissing: true
40
- }
41
- ];
42
- return mergeRsbuildConfig(rsbuildConfig, {
43
- output: {
44
- copy: Array.isArray(copy) ? publicPattern : {
45
- patterns: publicPattern
46
- }
47
- }
48
- });
49
- }
50
- });
51
- }
52
- });
53
- // Annotate the CommonJS export names for ESM import in node:
54
- 0 && (module.exports = {
55
- pluginServer
56
- });
@@ -1,5 +0,0 @@
1
- import type { RsbuildPlugin } from '../../types';
2
- /**
3
- * Provide some basic configs of rspack
4
- */
5
- export declare const pluginBasic: () => RsbuildPlugin;