@rsbuild/core 0.1.8 → 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.
- package/compiled/commander/package.json +1 -1
- package/compiled/connect-history-api-fallback/package.json +1 -1
- package/compiled/dotenv/package.json +1 -1
- package/compiled/dotenv-expand/package.json +1 -1
- package/compiled/http-compression/package.json +1 -1
- package/compiled/open/package.json +1 -1
- package/compiled/sirv/package.json +1 -1
- package/compiled/ws/package.json +1 -1
- package/dist/cli/commands.js +6 -3
- package/dist/cli/config.d.ts +7 -1
- package/dist/cli/config.js +7 -4
- package/dist/cli/prepare.js +1 -1
- package/dist/createRsbuild.js +2 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -0
- package/dist/loadEnv.d.ts +2 -2
- package/dist/loadEnv.js +2 -2
- package/dist/plugins/asset.js +2 -2
- package/dist/plugins/basic.d.ts +5 -0
- package/dist/plugins/basic.js +68 -0
- package/dist/plugins/fileSize.js +1 -1
- package/dist/plugins/html.d.ts +1 -2
- package/dist/plugins/html.js +8 -8
- package/dist/plugins/index.js +2 -3
- package/dist/plugins/inlineChunk.js +25 -28
- package/dist/plugins/networkPerformance.js +3 -11
- package/dist/plugins/nodeAddons.js +1 -1
- package/dist/plugins/preloadOrPrefetch.js +4 -10
- package/dist/plugins/wasm.js +1 -1
- package/dist/provider/core/createCompiler.js +17 -9
- package/dist/provider/core/createContext.d.ts +3 -3
- package/dist/provider/core/createContext.js +13 -27
- package/dist/provider/core/initConfigs.d.ts +2 -2
- package/dist/provider/core/initConfigs.js +4 -3
- package/dist/provider/core/initPlugins.js +15 -12
- package/dist/provider/core/inspectConfig.d.ts +2 -20
- package/dist/provider/core/inspectConfig.js +6 -6
- package/dist/provider/css-modules-typescript-pre-loader/index.js +1 -1
- package/dist/provider/css-modules-typescript-pre-loader/{postcss-icss-extract-plugin.js → postcssIcssExtractPlugin.js} +5 -5
- package/dist/provider/index.d.ts +1 -2
- package/dist/provider/index.js +4 -7
- package/dist/provider/plugins/css.js +5 -10
- package/dist/provider/plugins/less.js +2 -2
- package/dist/provider/plugins/minimize.d.ts +1 -4
- package/dist/provider/plugins/minimize.js +18 -15
- package/dist/provider/plugins/output.js +2 -2
- package/dist/provider/plugins/resolve.js +0 -5
- package/dist/provider/plugins/rspackProfile.js +7 -4
- package/dist/provider/plugins/sass.js +2 -2
- package/dist/provider/plugins/server.d.ts +2 -0
- package/dist/provider/plugins/server.js +70 -0
- package/dist/provider/plugins/swc.js +1 -8
- package/dist/provider/provider.js +15 -1
- package/dist/provider/shared.d.ts +2 -3
- package/dist/provider/shared.js +4 -18
- package/dist/rspack/HtmlAppIconPlugin.d.ts +0 -3
- package/dist/rspack/HtmlAppIconPlugin.js +2 -2
- package/dist/rspack/HtmlBasicPlugin.d.ts +0 -3
- package/dist/rspack/HtmlBasicPlugin.js +24 -10
- package/dist/rspack/HtmlCrossOriginPlugin.d.ts +0 -3
- package/dist/rspack/HtmlCrossOriginPlugin.js +12 -2
- package/dist/rspack/HtmlNetworkPerformancePlugin.d.ts +1 -3
- package/dist/rspack/HtmlNetworkPerformancePlugin.js +13 -3
- package/dist/rspack/HtmlNoncePlugin.d.ts +0 -3
- package/dist/rspack/HtmlNoncePlugin.js +12 -2
- package/dist/rspack/HtmlTagsPlugin.d.ts +1 -7
- package/dist/rspack/HtmlTagsPlugin.js +12 -1
- package/dist/rspack/InlineChunkHtmlPlugin.d.ts +2 -3
- package/dist/rspack/InlineChunkHtmlPlugin.js +17 -3
- package/dist/rspack/RemoveCssSourcemapPlugin.d.ts +1 -3
- package/dist/rspack/RemoveCssSourcemapPlugin.js +1 -2
- package/dist/rspack/{HtmlPreloadOrPrefetchPlugin/index.d.ts → preload/HtmlPreloadOrPrefetchPlugin.d.ts} +3 -4
- package/dist/rspack/{HtmlPreloadOrPrefetchPlugin/index.js → preload/HtmlPreloadOrPrefetchPlugin.js} +17 -7
- package/dist/server/{dev-middleware → compiler-dev-middleware}/index.d.ts +2 -2
- package/dist/server/{dev-middleware → compiler-dev-middleware}/index.js +3 -3
- package/dist/server/{dev-middleware → compiler-dev-middleware}/socketServer.d.ts +2 -2
- package/dist/server/devMiddlewares.d.ts +7 -0
- package/dist/server/devMiddlewares.js +156 -0
- package/dist/server/devServer.d.ts +10 -23
- package/dist/server/devServer.js +77 -162
- package/dist/server/httpServer.d.ts +8 -0
- package/dist/server/httpServer.js +48 -0
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +2 -0
- package/dist/server/prodServer.d.ts +0 -5
- package/dist/server/prodServer.js +13 -27
- package/package.json +5 -4
- package/compiled/jiti/index.js +0 -1885
- package/compiled/jiti/license +0 -21
- package/compiled/jiti/package.json +0 -1
- package/compiled/jiti/types/jiti.d.ts +0 -19
- package/compiled/jiti/types/types.d.ts +0 -31
- package/dist/plugins/devtool.d.ts +0 -2
- package/dist/plugins/devtool.js +0 -46
- package/dist/plugins/server.d.ts +0 -2
- package/dist/plugins/server.js +0 -56
- package/dist/provider/plugins/basic.d.ts +0 -5
- package/dist/provider/plugins/basic.js +0 -34
- /package/dist/provider/css-modules-typescript-pre-loader/{postcss-icss-extract-plugin.d.ts → postcssIcssExtractPlugin.d.ts} +0 -0
- /package/dist/rspack/{HtmlPreloadOrPrefetchPlugin → preload}/helpers/determineAsValue.d.ts +0 -0
- /package/dist/rspack/{HtmlPreloadOrPrefetchPlugin → preload}/helpers/determineAsValue.js +0 -0
- /package/dist/rspack/{HtmlPreloadOrPrefetchPlugin → preload}/helpers/doesChunkBelongToHtml.d.ts +0 -0
- /package/dist/rspack/{HtmlPreloadOrPrefetchPlugin → preload}/helpers/doesChunkBelongToHtml.js +0 -0
- /package/dist/rspack/{HtmlPreloadOrPrefetchPlugin → preload}/helpers/extractChunks.d.ts +0 -0
- /package/dist/rspack/{HtmlPreloadOrPrefetchPlugin → preload}/helpers/extractChunks.js +0 -0
- /package/dist/rspack/{HtmlPreloadOrPrefetchPlugin → preload}/helpers/index.d.ts +0 -0
- /package/dist/rspack/{HtmlPreloadOrPrefetchPlugin → preload}/helpers/index.js +0 -0
- /package/dist/rspack/{HtmlPreloadOrPrefetchPlugin → preload}/helpers/type.d.ts +0 -0
- /package/dist/rspack/{HtmlPreloadOrPrefetchPlugin → preload}/helpers/type.js +0 -0
- /package/dist/server/{dev-middleware → compiler-dev-middleware}/socketServer.js +0 -0
package/dist/rspack/{HtmlPreloadOrPrefetchPlugin/index.js → preload/HtmlPreloadOrPrefetchPlugin.js}
RENAMED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
5
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
8
|
var __export = (target, all) => {
|
|
7
9
|
for (var name in all)
|
|
@@ -15,12 +17,21 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
17
|
}
|
|
16
18
|
return to;
|
|
17
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
|
+
));
|
|
18
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
29
|
var HtmlPreloadOrPrefetchPlugin_exports = {};
|
|
20
30
|
__export(HtmlPreloadOrPrefetchPlugin_exports, {
|
|
21
|
-
|
|
31
|
+
HtmlPreloadOrPrefetchPlugin: () => HtmlPreloadOrPrefetchPlugin
|
|
22
32
|
});
|
|
23
33
|
module.exports = __toCommonJS(HtmlPreloadOrPrefetchPlugin_exports);
|
|
34
|
+
var import_html_webpack_plugin = __toESM(require("html-webpack-plugin"));
|
|
24
35
|
var import_shared = require("@rsbuild/shared");
|
|
25
36
|
var import_helpers = require("./helpers");
|
|
26
37
|
/**
|
|
@@ -117,20 +128,19 @@ function generateLinks(options, type, compilation, htmlPluginData, HTMLCount) {
|
|
|
117
128
|
}
|
|
118
129
|
return links;
|
|
119
130
|
}
|
|
120
|
-
class
|
|
121
|
-
constructor(options, type,
|
|
131
|
+
class HtmlPreloadOrPrefetchPlugin {
|
|
132
|
+
constructor(options, type, HTMLCount) {
|
|
122
133
|
this.resourceHints = [];
|
|
123
134
|
this.options = {
|
|
124
135
|
...defaultOptions,
|
|
125
136
|
...typeof options === "boolean" ? {} : options
|
|
126
137
|
};
|
|
127
138
|
this.type = type;
|
|
128
|
-
this.HtmlPlugin = HtmlPlugin;
|
|
129
139
|
this.HTMLCount = HTMLCount;
|
|
130
140
|
}
|
|
131
141
|
apply(compiler) {
|
|
132
142
|
compiler.hooks.compilation.tap(this.constructor.name, (compilation) => {
|
|
133
|
-
|
|
143
|
+
import_html_webpack_plugin.default.getHooks(compilation).beforeAssetTagGeneration.tap(
|
|
134
144
|
`HTML${(0, import_shared.upperFirst)(this.type)}Plugin`,
|
|
135
145
|
(htmlPluginData) => {
|
|
136
146
|
this.resourceHints = generateLinks(
|
|
@@ -143,7 +153,7 @@ class HTMLPreloadOrPrefetchPlugin {
|
|
|
143
153
|
return htmlPluginData;
|
|
144
154
|
}
|
|
145
155
|
);
|
|
146
|
-
|
|
156
|
+
import_html_webpack_plugin.default.getHooks(compilation).alterAssetTags.tap(
|
|
147
157
|
`HTML${(0, import_shared.upperFirst)(this.type)}Plugin`,
|
|
148
158
|
(htmlPluginData) => {
|
|
149
159
|
if (this.resourceHints) {
|
|
@@ -163,5 +173,5 @@ class HTMLPreloadOrPrefetchPlugin {
|
|
|
163
173
|
}
|
|
164
174
|
// Annotate the CommonJS export names for ESM import in node:
|
|
165
175
|
0 && (module.exports = {
|
|
166
|
-
|
|
176
|
+
HtmlPreloadOrPrefetchPlugin
|
|
167
177
|
});
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
/// <reference types="node" />
|
|
3
3
|
import type { Server } from 'http';
|
|
4
4
|
import { EventEmitter } from 'events';
|
|
5
|
-
import type {
|
|
5
|
+
import type { RsbuildDevMiddlewareOptions, DevMiddlewareAPI, DevMiddleware as CustomDevMiddleware } from '@rsbuild/shared';
|
|
6
6
|
type Options = {
|
|
7
7
|
publicPaths: string[];
|
|
8
|
-
dev:
|
|
8
|
+
dev: RsbuildDevMiddlewareOptions['dev'];
|
|
9
9
|
devMiddleware?: CustomDevMiddleware;
|
|
10
10
|
};
|
|
11
11
|
export default class DevMiddleware extends EventEmitter {
|
|
@@ -26,11 +26,11 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
29
|
+
var compiler_dev_middleware_exports = {};
|
|
30
|
+
__export(compiler_dev_middleware_exports, {
|
|
31
31
|
default: () => DevMiddleware
|
|
32
32
|
});
|
|
33
|
-
module.exports = __toCommonJS(
|
|
33
|
+
module.exports = __toCommonJS(compiler_dev_middleware_exports);
|
|
34
34
|
var import_events = require("events");
|
|
35
35
|
var import_socketServer = __toESM(require("./socketServer"));
|
|
36
36
|
const noop = () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import type { Server } from 'http';
|
|
3
3
|
import ws from '../../../compiled/ws';
|
|
4
|
-
import { type Stats, type
|
|
4
|
+
import { type Stats, type RsbuildDevMiddlewareOptions } from '@rsbuild/shared';
|
|
5
5
|
export default class SocketServer {
|
|
6
6
|
private wsServer;
|
|
7
7
|
private readonly sockets;
|
|
@@ -9,7 +9,7 @@ export default class SocketServer {
|
|
|
9
9
|
private app?;
|
|
10
10
|
private stats?;
|
|
11
11
|
private timer;
|
|
12
|
-
constructor(options:
|
|
12
|
+
constructor(options: RsbuildDevMiddlewareOptions['dev']);
|
|
13
13
|
prepare(app: Server): void;
|
|
14
14
|
updateStats(stats: Stats): void;
|
|
15
15
|
sockWrite(type: string, data?: Record<string, any> | string | boolean): void;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Server } from 'http';
|
|
3
|
+
import { RequestHandler, RsbuildDevMiddlewareOptions } from '@rsbuild/shared';
|
|
4
|
+
export declare const getMiddlewares: (options: RsbuildDevMiddlewareOptions, app: Server) => Promise<{
|
|
5
|
+
close: () => Promise<void>;
|
|
6
|
+
middlewares: RequestHandler[];
|
|
7
|
+
}>;
|
|
@@ -0,0 +1,156 @@
|
|
|
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 devMiddlewares_exports = {};
|
|
30
|
+
__export(devMiddlewares_exports, {
|
|
31
|
+
getMiddlewares: () => getMiddlewares
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(devMiddlewares_exports);
|
|
34
|
+
var import_url = __toESM(require("url"));
|
|
35
|
+
var import_compiler_dev_middleware = __toESM(require("./compiler-dev-middleware"));
|
|
36
|
+
var import_middlewares = require("./middlewares");
|
|
37
|
+
var import_path = require("path");
|
|
38
|
+
const applySetupMiddlewares = (dev, devMiddleware) => {
|
|
39
|
+
const setupMiddlewares = dev.setupMiddlewares || [];
|
|
40
|
+
const serverOptions = {
|
|
41
|
+
sockWrite: (type, data) => devMiddleware.sockWrite(type, data)
|
|
42
|
+
};
|
|
43
|
+
const before = [];
|
|
44
|
+
const after = [];
|
|
45
|
+
setupMiddlewares.forEach((handler) => {
|
|
46
|
+
handler(
|
|
47
|
+
{
|
|
48
|
+
unshift: (...handlers) => before.unshift(...handlers),
|
|
49
|
+
push: (...handlers) => after.push(...handlers)
|
|
50
|
+
},
|
|
51
|
+
serverOptions
|
|
52
|
+
);
|
|
53
|
+
});
|
|
54
|
+
return { before, after };
|
|
55
|
+
};
|
|
56
|
+
const applyDefaultMiddlewares = async ({
|
|
57
|
+
app,
|
|
58
|
+
middlewares,
|
|
59
|
+
dev,
|
|
60
|
+
devMiddleware,
|
|
61
|
+
output,
|
|
62
|
+
pwd
|
|
63
|
+
}) => {
|
|
64
|
+
if (dev.compress) {
|
|
65
|
+
const { default: compression } = await Promise.resolve().then(() => __toESM(require("../../compiled/http-compression")));
|
|
66
|
+
middlewares.push((req, res, next) => {
|
|
67
|
+
compression({
|
|
68
|
+
gzip: true,
|
|
69
|
+
brotli: false
|
|
70
|
+
})(req, res, next);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
middlewares.push((req, res, next) => {
|
|
74
|
+
res.setHeader("Access-Control-Allow-Origin", "*");
|
|
75
|
+
const path = req.url ? import_url.default.parse(req.url).pathname : "";
|
|
76
|
+
if (path?.includes("hot-update")) {
|
|
77
|
+
res.setHeader("Access-Control-Allow-Credentials", "false");
|
|
78
|
+
}
|
|
79
|
+
const confHeaders = dev.headers;
|
|
80
|
+
if (confHeaders) {
|
|
81
|
+
for (const [key, value] of Object.entries(confHeaders)) {
|
|
82
|
+
res.setHeader(key, value);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
next();
|
|
86
|
+
});
|
|
87
|
+
if (dev.proxy) {
|
|
88
|
+
const { createProxyMiddleware } = await Promise.resolve().then(() => __toESM(require("./proxy")));
|
|
89
|
+
const { middlewares: proxyMiddlewares } = createProxyMiddleware(
|
|
90
|
+
dev.proxy,
|
|
91
|
+
app
|
|
92
|
+
);
|
|
93
|
+
proxyMiddlewares.forEach((middleware) => {
|
|
94
|
+
middlewares.push(middleware);
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
devMiddleware.init(app);
|
|
98
|
+
devMiddleware.middleware && middlewares.push(devMiddleware.middleware);
|
|
99
|
+
if (dev.publicDir && dev.publicDir.name) {
|
|
100
|
+
const { default: sirv } = await Promise.resolve().then(() => __toESM(require("../../compiled/sirv")));
|
|
101
|
+
const { name } = dev.publicDir;
|
|
102
|
+
const publicDir = (0, import_path.isAbsolute)(name) ? name : (0, import_path.join)(pwd, name);
|
|
103
|
+
const assetMiddleware = sirv(publicDir, {
|
|
104
|
+
etag: true,
|
|
105
|
+
dev: true
|
|
106
|
+
});
|
|
107
|
+
middlewares.push(assetMiddleware);
|
|
108
|
+
}
|
|
109
|
+
const { distPath } = output;
|
|
110
|
+
middlewares.push(
|
|
111
|
+
(0, import_middlewares.getHtmlFallbackMiddleware)({
|
|
112
|
+
distPath: (0, import_path.isAbsolute)(distPath) ? distPath : (0, import_path.join)(pwd, distPath),
|
|
113
|
+
callback: devMiddleware.middleware,
|
|
114
|
+
htmlFallback: dev.htmlFallback
|
|
115
|
+
})
|
|
116
|
+
);
|
|
117
|
+
if (dev.historyApiFallback) {
|
|
118
|
+
const { default: connectHistoryApiFallback } = await Promise.resolve().then(() => __toESM(require("../../compiled/connect-history-api-fallback")));
|
|
119
|
+
const historyApiFallbackMiddleware = connectHistoryApiFallback(
|
|
120
|
+
dev.historyApiFallback === true ? {} : dev.historyApiFallback
|
|
121
|
+
);
|
|
122
|
+
middlewares.push(historyApiFallbackMiddleware);
|
|
123
|
+
devMiddleware.middleware && middlewares.push(devMiddleware.middleware);
|
|
124
|
+
}
|
|
125
|
+
middlewares.push(import_middlewares.faviconFallbackMiddleware);
|
|
126
|
+
middlewares.push(import_middlewares.notFoundMiddleware);
|
|
127
|
+
};
|
|
128
|
+
const getMiddlewares = async (options, app) => {
|
|
129
|
+
const middlewares = [];
|
|
130
|
+
const devMiddleware = new import_compiler_dev_middleware.default({
|
|
131
|
+
dev: options.dev,
|
|
132
|
+
publicPaths: options.output.publicPaths,
|
|
133
|
+
devMiddleware: options.devMiddleware
|
|
134
|
+
});
|
|
135
|
+
const { before, after } = applySetupMiddlewares(options.dev, devMiddleware);
|
|
136
|
+
before.forEach((fn) => middlewares.push(fn));
|
|
137
|
+
await applyDefaultMiddlewares({
|
|
138
|
+
app,
|
|
139
|
+
middlewares,
|
|
140
|
+
dev: options.dev,
|
|
141
|
+
devMiddleware,
|
|
142
|
+
output: options.output,
|
|
143
|
+
pwd: options.pwd
|
|
144
|
+
});
|
|
145
|
+
after.forEach((fn) => middlewares.push(fn));
|
|
146
|
+
return {
|
|
147
|
+
close: async () => {
|
|
148
|
+
devMiddleware.close();
|
|
149
|
+
},
|
|
150
|
+
middlewares
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
154
|
+
0 && (module.exports = {
|
|
155
|
+
getMiddlewares
|
|
156
|
+
});
|
|
@@ -1,30 +1,17 @@
|
|
|
1
|
-
|
|
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
|
|
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
|
package/dist/server/devServer.js
CHANGED
|
@@ -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
|
-
|
|
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_proxy = require("./proxy");
|
|
42
|
-
var import_middlewares = require("./middlewares");
|
|
43
|
-
var import_path = require("path");
|
|
44
37
|
var import_restart = require("./restart");
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
this.pwd = options.pwd;
|
|
49
|
-
this.dev = options.dev;
|
|
50
|
-
this.output = options.output;
|
|
51
|
-
this.devMiddleware = new import_dev_middleware.default({
|
|
52
|
-
dev: this.dev,
|
|
53
|
-
publicPaths: options.output.publicPaths,
|
|
54
|
-
devMiddleware: options.devMiddleware
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
applySetupMiddlewares() {
|
|
58
|
-
const setupMiddlewares = this.dev.setupMiddlewares || [];
|
|
59
|
-
const serverOptions = {
|
|
60
|
-
sockWrite: (type, data) => this.devMiddleware.sockWrite(type, data)
|
|
61
|
-
};
|
|
62
|
-
const before = [];
|
|
63
|
-
const after = [];
|
|
64
|
-
setupMiddlewares.forEach((handler) => {
|
|
65
|
-
handler(
|
|
66
|
-
{
|
|
67
|
-
unshift: (...handlers) => before.unshift(...handlers),
|
|
68
|
-
push: (...handlers) => after.push(...handlers)
|
|
69
|
-
},
|
|
70
|
-
serverOptions
|
|
71
|
-
);
|
|
72
|
-
});
|
|
73
|
-
return { before, after };
|
|
74
|
-
}
|
|
75
|
-
// Complete the preparation of services
|
|
76
|
-
async onInit(app) {
|
|
77
|
-
this.app = app;
|
|
78
|
-
const { before, after } = this.applySetupMiddlewares();
|
|
79
|
-
before.forEach((fn) => this.middlewares.use(fn));
|
|
80
|
-
await this.applyDefaultMiddlewares(app);
|
|
81
|
-
after.forEach((fn) => this.middlewares.use(fn));
|
|
82
|
-
}
|
|
83
|
-
async applyDefaultMiddlewares(app) {
|
|
84
|
-
const { dev, devMiddleware } = this;
|
|
85
|
-
if (dev.compress) {
|
|
86
|
-
const { default: compression } = await Promise.resolve().then(() => __toESM(require("../../compiled/http-compression")));
|
|
87
|
-
this.middlewares.use((req, res, next) => {
|
|
88
|
-
compression({
|
|
89
|
-
gzip: true,
|
|
90
|
-
brotli: false
|
|
91
|
-
})(req, res, next);
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
this.middlewares.use((req, res, next) => {
|
|
95
|
-
res.setHeader("Access-Control-Allow-Origin", "*");
|
|
96
|
-
const path = req.url ? import_url.default.parse(req.url).pathname : "";
|
|
97
|
-
if (path?.includes("hot-update")) {
|
|
98
|
-
res.setHeader("Access-Control-Allow-Credentials", "false");
|
|
99
|
-
}
|
|
100
|
-
const confHeaders = dev.headers;
|
|
101
|
-
if (confHeaders) {
|
|
102
|
-
for (const [key, value] of Object.entries(confHeaders)) {
|
|
103
|
-
res.setHeader(key, value);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
next();
|
|
107
|
-
});
|
|
108
|
-
if (dev.proxy) {
|
|
109
|
-
const { middlewares } = (0, import_proxy.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
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
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
|
|
213
|
-
const
|
|
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,
|
|
128
|
+
(0, import_shared.printServerURLs)(urls, defaultRoutes, logger);
|
|
222
129
|
}
|
|
223
|
-
await
|
|
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
|
-
|
|
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
|
|
147
|
+
await rsbuildServer.afterStart({
|
|
237
148
|
port,
|
|
238
|
-
routes
|
|
149
|
+
routes: defaultRoutes
|
|
239
150
|
});
|
|
240
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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>>;
|