@modern-js/server 2.0.0-beta.3 → 2.0.0-beta.4
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/CHANGELOG.md +79 -0
- package/dist/js/modern/constants.js +10 -9
- package/dist/js/modern/dev-tools/dev-middleware/dev-server-plugin.js +14 -20
- package/dist/js/modern/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +14 -19
- package/dist/js/modern/dev-tools/dev-middleware/hmr-client/index.js +134 -184
- package/dist/js/modern/dev-tools/dev-middleware/hmr-client/types.d.js +0 -0
- package/dist/js/modern/dev-tools/dev-middleware/index.js +65 -60
- package/dist/js/modern/dev-tools/dev-middleware/socket-server.js +33 -59
- package/dist/js/modern/dev-tools/https/global.d.js +0 -0
- package/dist/js/modern/dev-tools/https/index.js +28 -5
- package/dist/js/modern/dev-tools/mock/getMockData.js +71 -45
- package/dist/js/modern/dev-tools/mock/index.js +34 -15
- package/dist/js/modern/dev-tools/register/index.js +71 -54
- package/dist/js/modern/dev-tools/watcher/dependency-tree.js +25 -34
- package/dist/js/modern/dev-tools/watcher/index.js +51 -33
- package/dist/js/modern/dev-tools/watcher/stats-cache.js +13 -20
- package/dist/js/modern/index.js +7 -4
- package/dist/js/modern/server/dev-server.js +191 -215
- package/dist/js/modern/server/index.js +7 -4
- package/dist/js/node/constants.js +27 -14
- package/dist/js/node/dev-tools/dev-middleware/dev-server-plugin.js +36 -24
- package/dist/js/node/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +31 -24
- package/dist/js/node/dev-tools/dev-middleware/hmr-client/index.js +56 -98
- package/dist/js/node/dev-tools/dev-middleware/hmr-client/types.d.js +0 -0
- package/dist/js/node/dev-tools/dev-middleware/index.js +94 -72
- package/dist/js/node/dev-tools/dev-middleware/socket-server.js +57 -66
- package/dist/js/node/dev-tools/https/global.d.js +0 -0
- package/dist/js/node/dev-tools/https/index.js +52 -13
- package/dist/js/node/dev-tools/mock/getMockData.js +88 -51
- package/dist/js/node/dev-tools/mock/index.js +62 -28
- package/dist/js/node/dev-tools/register/index.js +98 -64
- package/dist/js/node/dev-tools/watcher/dependency-tree.js +50 -43
- package/dist/js/node/dev-tools/watcher/index.js +79 -47
- package/dist/js/node/dev-tools/watcher/stats-cache.js +40 -30
- package/dist/js/node/index.js +25 -15
- package/dist/js/node/server/dev-server.js +234 -237
- package/dist/js/node/server/index.js +26 -11
- package/dist/js/treeshaking/constants.js +21 -0
- package/dist/js/treeshaking/dev-tools/dev-middleware/dev-server-plugin.js +74 -0
- package/dist/js/treeshaking/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +51 -0
- package/dist/js/treeshaking/dev-tools/dev-middleware/hmr-client/index.js +157 -0
- package/dist/js/treeshaking/dev-tools/dev-middleware/hmr-client/types.d.js +1 -0
- package/dist/js/treeshaking/dev-tools/dev-middleware/index.js +363 -0
- package/dist/js/treeshaking/dev-tools/dev-middleware/socket-server.js +209 -0
- package/dist/js/treeshaking/dev-tools/https/global.d.js +1 -0
- package/dist/js/treeshaking/dev-tools/https/index.js +161 -0
- package/dist/js/treeshaking/dev-tools/mock/getMockData.js +327 -0
- package/dist/js/treeshaking/dev-tools/mock/index.js +191 -0
- package/dist/js/treeshaking/dev-tools/register/index.js +153 -0
- package/dist/js/treeshaking/dev-tools/watcher/dependency-tree.js +150 -0
- package/dist/js/treeshaking/dev-tools/watcher/index.js +200 -0
- package/dist/js/treeshaking/dev-tools/watcher/stats-cache.js +128 -0
- package/dist/js/treeshaking/index.js +9 -0
- package/dist/js/treeshaking/server/dev-server.js +800 -0
- package/dist/js/treeshaking/server/index.js +92 -0
- package/dist/js/treeshaking/types.js +1 -0
- package/dist/types/dev-tools/mock/getMockData.d.ts +2 -0
- package/dist/types/dev-tools/watcher/dependency-tree.d.ts +2 -0
- package/dist/types/dev-tools/watcher/index.d.ts +1 -1
- package/dist/types/index.d.ts +2 -0
- package/package.json +16 -13
- package/temp-fix-hmr.js +483 -0
|
@@ -1,62 +1,123 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
21
|
+
mod
|
|
22
|
+
));
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var stdin_exports = {};
|
|
25
|
+
__export(stdin_exports, {
|
|
26
|
+
ModernDevServer: () => ModernDevServer
|
|
5
27
|
});
|
|
6
|
-
exports
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
var
|
|
16
|
-
var
|
|
17
|
-
var
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
28
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
29
|
+
var import_http = require("http");
|
|
30
|
+
var import_path = __toESM(require("path"));
|
|
31
|
+
var import_https = require("https");
|
|
32
|
+
var import_utils = require("@modern-js/utils");
|
|
33
|
+
var import_prod_server = require("@modern-js/prod-server");
|
|
34
|
+
var import_constants = require("@modern-js/utils/constants");
|
|
35
|
+
var import_constants2 = require("../constants");
|
|
36
|
+
var import_mock = require("../dev-tools/mock");
|
|
37
|
+
var import_register = require("../dev-tools/register");
|
|
38
|
+
var import_watcher = __toESM(require("../dev-tools/watcher"));
|
|
39
|
+
var import_dev_middleware = __toESM(require("../dev-tools/dev-middleware"));
|
|
40
|
+
var __create2 = Object.create;
|
|
41
|
+
var __defProp2 = Object.defineProperty;
|
|
42
|
+
var __defProps = Object.defineProperties;
|
|
43
|
+
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
|
|
44
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
45
|
+
var __getOwnPropNames2 = Object.getOwnPropertyNames;
|
|
46
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
47
|
+
var __getProtoOf2 = Object.getPrototypeOf;
|
|
48
|
+
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
|
|
49
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
50
|
+
var __reflectGet = Reflect.get;
|
|
51
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
52
|
+
var __spreadValues = (a, b) => {
|
|
53
|
+
for (var prop in b || (b = {}))
|
|
54
|
+
if (__hasOwnProp2.call(b, prop))
|
|
55
|
+
__defNormalProp(a, prop, b[prop]);
|
|
56
|
+
if (__getOwnPropSymbols)
|
|
57
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
58
|
+
if (__propIsEnum.call(b, prop))
|
|
59
|
+
__defNormalProp(a, prop, b[prop]);
|
|
60
|
+
}
|
|
61
|
+
return a;
|
|
62
|
+
};
|
|
63
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
64
|
+
var __copyProps2 = (to, from, except, desc) => {
|
|
65
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
66
|
+
for (let key of __getOwnPropNames2(from))
|
|
67
|
+
if (!__hasOwnProp2.call(to, key) && key !== except)
|
|
68
|
+
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
|
|
69
|
+
}
|
|
70
|
+
return to;
|
|
71
|
+
};
|
|
72
|
+
var __toESM2 = (mod, isNodeMode, target) => (target = mod != null ? __create2(__getProtoOf2(mod)) : {}, __copyProps2(
|
|
73
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp2(target, "default", { value: mod, enumerable: true }) : target,
|
|
74
|
+
mod
|
|
75
|
+
));
|
|
76
|
+
var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf2(cls), key, obj);
|
|
77
|
+
var __async = (__this, __arguments, generator) => {
|
|
78
|
+
return new Promise((resolve, reject) => {
|
|
79
|
+
var fulfilled = (value) => {
|
|
80
|
+
try {
|
|
81
|
+
step(generator.next(value));
|
|
82
|
+
} catch (e) {
|
|
83
|
+
reject(e);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
var rejected = (value) => {
|
|
87
|
+
try {
|
|
88
|
+
step(generator.throw(value));
|
|
89
|
+
} catch (e) {
|
|
90
|
+
reject(e);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
94
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
95
|
+
});
|
|
96
|
+
};
|
|
97
|
+
class ModernDevServer extends import_prod_server.ModernServer {
|
|
25
98
|
constructor(options) {
|
|
26
99
|
super(options);
|
|
27
|
-
|
|
28
|
-
// dev server should work in pwd
|
|
29
|
-
_defineProperty(this, "mockHandler", null);
|
|
30
|
-
_defineProperty(this, "dev", void 0);
|
|
31
|
-
_defineProperty(this, "devMiddleware", void 0);
|
|
32
|
-
_defineProperty(this, "watcher", void 0);
|
|
100
|
+
this.mockHandler = null;
|
|
33
101
|
this.workDir = this.pwd;
|
|
34
|
-
|
|
35
|
-
// set dev server options, like webpack-dev-server
|
|
36
102
|
this.dev = this.getDevOptions(options);
|
|
37
|
-
|
|
38
|
-
// create dev middleware instance
|
|
39
|
-
this.devMiddleware = new _devMiddleware.default({
|
|
103
|
+
this.devMiddleware = new import_dev_middleware.default({
|
|
40
104
|
dev: this.dev,
|
|
41
105
|
compiler: options.compiler,
|
|
42
106
|
devMiddleware: options.devMiddleware
|
|
43
107
|
});
|
|
44
|
-
(0,
|
|
108
|
+
(0, import_register.enableRegister)(this.pwd, this.conf);
|
|
45
109
|
}
|
|
46
110
|
getDevOptions(options) {
|
|
47
|
-
const devOptions = typeof options.dev ===
|
|
48
|
-
const defaultOptions = (0,
|
|
49
|
-
return
|
|
50
|
-
client:
|
|
111
|
+
const devOptions = typeof options.dev === "boolean" ? {} : options.dev;
|
|
112
|
+
const defaultOptions = (0, import_constants2.getDefaultDevOptions)();
|
|
113
|
+
return __spreadProps(__spreadValues(__spreadValues({}, defaultOptions), devOptions), {
|
|
114
|
+
client: __spreadValues(__spreadValues({}, defaultOptions.client), devOptions == null ? void 0 : devOptions.client)
|
|
51
115
|
});
|
|
52
116
|
}
|
|
53
117
|
addMiddlewareHandler(handlers) {
|
|
54
|
-
handlers.forEach(handler => {
|
|
118
|
+
handlers.forEach((handler) => {
|
|
55
119
|
this.addHandler((ctx, next) => {
|
|
56
|
-
const {
|
|
57
|
-
req,
|
|
58
|
-
res
|
|
59
|
-
} = ctx;
|
|
120
|
+
const { req, res } = ctx;
|
|
60
121
|
return handler(req, res, next);
|
|
61
122
|
});
|
|
62
123
|
});
|
|
@@ -68,186 +129,132 @@ class ModernDevServer extends _prodServer.ModernServer {
|
|
|
68
129
|
};
|
|
69
130
|
const befores = [];
|
|
70
131
|
const afters = [];
|
|
71
|
-
setupMiddlewares.forEach(handler => {
|
|
72
|
-
handler(
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
132
|
+
setupMiddlewares.forEach((handler) => {
|
|
133
|
+
handler(
|
|
134
|
+
{
|
|
135
|
+
unshift: (...handlers) => befores.unshift(...handlers),
|
|
136
|
+
push: (...handlers) => afters.push(...handlers)
|
|
137
|
+
},
|
|
138
|
+
serverOptions
|
|
139
|
+
);
|
|
76
140
|
});
|
|
77
|
-
return {
|
|
78
|
-
befores,
|
|
79
|
-
afters
|
|
80
|
-
};
|
|
141
|
+
return { befores, afters };
|
|
81
142
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
await this.applyDefaultMiddlewares(app);
|
|
100
|
-
|
|
101
|
-
// after dev handler
|
|
102
|
-
const afterHandlers = await this.setupAfterDevMiddleware();
|
|
103
|
-
this.addMiddlewareHandler([...afters, ...afterHandlers]);
|
|
104
|
-
await super.onInit(runner, app);
|
|
105
|
-
|
|
106
|
-
// watch mock/ server/ api/ dir file change
|
|
107
|
-
if (dev.watch) {
|
|
108
|
-
this.startWatcher();
|
|
109
|
-
app.on('close', async () => {
|
|
110
|
-
var _this$watcher;
|
|
111
|
-
await ((_this$watcher = this.watcher) === null || _this$watcher === void 0 ? void 0 : _this$watcher.close());
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
async applyDefaultMiddlewares(app) {
|
|
116
|
-
const {
|
|
117
|
-
pwd,
|
|
118
|
-
dev,
|
|
119
|
-
devMiddleware
|
|
120
|
-
} = this;
|
|
121
|
-
this.addHandler((ctx, next) => {
|
|
122
|
-
// allow hmr request cross-domain, because the user may use global proxy
|
|
123
|
-
ctx.res.setHeader('Access-Control-Allow-Origin', '*');
|
|
124
|
-
if (ctx.path.includes('hot-update')) {
|
|
125
|
-
ctx.res.setHeader('Access-Control-Allow-Credentials', 'false');
|
|
143
|
+
onInit(runner, app) {
|
|
144
|
+
return __async(this, null, function* () {
|
|
145
|
+
this.runner = runner;
|
|
146
|
+
const { dev } = this;
|
|
147
|
+
const { befores, afters } = this.applySetupMiddlewares();
|
|
148
|
+
const beforeHandlers = yield this.setupBeforeDevMiddleware();
|
|
149
|
+
this.addMiddlewareHandler([...beforeHandlers, ...befores]);
|
|
150
|
+
yield this.applyDefaultMiddlewares(app);
|
|
151
|
+
const afterHandlers = yield this.setupAfterDevMiddleware();
|
|
152
|
+
this.addMiddlewareHandler([...afters, ...afterHandlers]);
|
|
153
|
+
yield __superGet(ModernDevServer.prototype, this, "onInit").call(this, runner, app);
|
|
154
|
+
if (dev.watch) {
|
|
155
|
+
this.startWatcher();
|
|
156
|
+
app.on("close", () => __async(this, null, function* () {
|
|
157
|
+
var _a;
|
|
158
|
+
yield (_a = this.watcher) == null ? void 0 : _a.close();
|
|
159
|
+
}));
|
|
126
160
|
}
|
|
127
|
-
|
|
128
|
-
// 用户在 devServer 上配置的 headers 不会对 html 的请求生效,加入下面代码,使配置的 headers 对所有请求生效
|
|
129
|
-
const confHeaders = dev.headers;
|
|
130
|
-
if (confHeaders) {
|
|
131
|
-
for (const [key, value] of Object.entries(confHeaders)) {
|
|
132
|
-
ctx.res.setHeader(key, value);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
next();
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
// mock handler
|
|
139
|
-
this.mockHandler = (0, _mock.createMockHandler)({
|
|
140
|
-
pwd
|
|
141
161
|
});
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
}
|
|
162
|
+
}
|
|
163
|
+
applyDefaultMiddlewares(app) {
|
|
164
|
+
return __async(this, null, function* () {
|
|
165
|
+
const { pwd, dev, devMiddleware } = this;
|
|
166
|
+
this.addHandler((ctx, next) => {
|
|
167
|
+
ctx.res.setHeader("Access-Control-Allow-Origin", "*");
|
|
168
|
+
if (ctx.path.includes("hot-update")) {
|
|
169
|
+
ctx.res.setHeader("Access-Control-Allow-Credentials", "false");
|
|
170
|
+
}
|
|
171
|
+
const confHeaders = dev.headers;
|
|
172
|
+
if (confHeaders) {
|
|
173
|
+
for (const [key, value] of Object.entries(confHeaders)) {
|
|
174
|
+
ctx.res.setHeader(key, value);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
146
177
|
next();
|
|
147
|
-
}
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
// dev proxy handler, each proxy has own handler
|
|
151
|
-
const proxyHandlers = (0, _prodServer.createProxyHandler)(dev.proxy);
|
|
152
|
-
if (proxyHandlers) {
|
|
153
|
-
proxyHandlers.forEach(handler => {
|
|
154
|
-
this.addHandler(handler);
|
|
155
178
|
});
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
179
|
+
this.mockHandler = (0, import_mock.createMockHandler)({ pwd });
|
|
180
|
+
this.addHandler((ctx, next) => {
|
|
181
|
+
if (this.mockHandler) {
|
|
182
|
+
this.mockHandler(ctx, next);
|
|
183
|
+
} else {
|
|
184
|
+
next();
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
const proxyHandlers = (0, import_prod_server.createProxyHandler)(dev.proxy);
|
|
188
|
+
if (proxyHandlers) {
|
|
189
|
+
proxyHandlers.forEach((handler) => {
|
|
190
|
+
this.addHandler(handler);
|
|
167
191
|
});
|
|
168
192
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
193
|
+
devMiddleware.init(app);
|
|
194
|
+
devMiddleware.on("change", (stats) => {
|
|
195
|
+
if (stats.toJson({ all: false }).name === "client") {
|
|
196
|
+
this.onRepack({ routes: this.getRoutes() });
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
this.addHandler((ctx, next) => {
|
|
200
|
+
const { req, res } = ctx;
|
|
201
|
+
if (devMiddleware.middleware) {
|
|
202
|
+
devMiddleware.middleware(req, res, next);
|
|
203
|
+
} else {
|
|
204
|
+
next();
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
if (dev.historyApiFallback) {
|
|
208
|
+
const { default: connectHistoryApiFallback } = yield Promise.resolve().then(() => __toESM2(require("connect-history-api-fallback")));
|
|
209
|
+
const historyApiFallbackMiddleware = connectHistoryApiFallback(
|
|
210
|
+
typeof dev.historyApiFallback === "boolean" ? {} : dev.historyApiFallback
|
|
211
|
+
);
|
|
212
|
+
this.addHandler(
|
|
213
|
+
(ctx, next) => historyApiFallbackMiddleware(ctx.req, ctx.res, next)
|
|
214
|
+
);
|
|
179
215
|
}
|
|
180
216
|
});
|
|
181
|
-
if (dev.historyApiFallback) {
|
|
182
|
-
const {
|
|
183
|
-
default: connectHistoryApiFallback
|
|
184
|
-
} = await Promise.resolve().then(() => _interopRequireWildcard(require('connect-history-api-fallback')));
|
|
185
|
-
const historyApiFallbackMiddleware = connectHistoryApiFallback(typeof dev.historyApiFallback === 'boolean' ? {} : dev.historyApiFallback);
|
|
186
|
-
this.addHandler((ctx, next) => historyApiFallbackMiddleware(ctx.req, ctx.res, next));
|
|
187
|
-
}
|
|
188
217
|
}
|
|
189
218
|
onRepack(options = {}) {
|
|
190
|
-
// reset the routing management instance every times the service starts
|
|
191
219
|
if (Array.isArray(options.routes)) {
|
|
192
220
|
this.router.reset(this.filterRoutes(options.routes));
|
|
193
221
|
}
|
|
194
|
-
|
|
195
|
-
// clean ssr bundle cache
|
|
196
222
|
this.cleanSSRCache();
|
|
197
|
-
|
|
198
|
-
// reset static file
|
|
199
223
|
this.reader.updateFile();
|
|
200
224
|
super.onRepack(options);
|
|
201
225
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
dev
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
}
|
|
214
|
-
return (0, _http.createServer)(handler);
|
|
215
|
-
}
|
|
226
|
+
createHTTPServer(handler) {
|
|
227
|
+
return __async(this, null, function* () {
|
|
228
|
+
const { dev } = this;
|
|
229
|
+
const devHttpsOption = typeof dev === "object" && dev.https;
|
|
230
|
+
if (devHttpsOption) {
|
|
231
|
+
const { genHttpsOptions } = require("../dev-tools/https");
|
|
232
|
+
const httpsOptions = yield genHttpsOptions(devHttpsOption);
|
|
233
|
+
return (0, import_https.createServer)(httpsOptions, handler);
|
|
234
|
+
} else {
|
|
235
|
+
return (0, import_http.createServer)(handler);
|
|
236
|
+
}
|
|
237
|
+
});
|
|
216
238
|
}
|
|
217
239
|
warmupSSRBundle() {
|
|
218
|
-
// not warmup ssr bundle on development
|
|
219
240
|
}
|
|
220
241
|
onServerChange({
|
|
221
242
|
filepath,
|
|
222
243
|
event
|
|
223
244
|
}) {
|
|
224
|
-
const {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
const {
|
|
228
|
-
mock
|
|
229
|
-
} = _prodServer.AGGRED_DIR;
|
|
230
|
-
const mockPath = _path.default.normalize(_path.default.join(pwd, mock));
|
|
245
|
+
const { pwd } = this;
|
|
246
|
+
const { mock } = import_prod_server.AGGRED_DIR;
|
|
247
|
+
const mockPath = import_path.default.normalize(import_path.default.join(pwd, mock));
|
|
231
248
|
this.runner.reset();
|
|
232
249
|
if (filepath.startsWith(mockPath)) {
|
|
233
|
-
this.mockHandler = (0,
|
|
234
|
-
pwd
|
|
235
|
-
});
|
|
250
|
+
this.mockHandler = (0, import_mock.createMockHandler)({ pwd });
|
|
236
251
|
} else {
|
|
237
252
|
try {
|
|
238
|
-
const success = this.runner.onApiChange([
|
|
239
|
-
filename: filepath,
|
|
240
|
-
|
|
241
|
-
}]);
|
|
242
|
-
|
|
243
|
-
// onApiChange 钩子被调用,且返回 true,则表示无需重新编译
|
|
244
|
-
// onApiChange 的类型是 WaterFall,WaterFall 钩子的返回值类型目前有问题
|
|
245
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
246
|
-
// @ts-expect-error
|
|
253
|
+
const success = this.runner.onApiChange([
|
|
254
|
+
{ filename: filepath, event }
|
|
255
|
+
]);
|
|
247
256
|
if (success !== true) {
|
|
248
|
-
super.onServerChange({
|
|
249
|
-
filepath
|
|
250
|
-
});
|
|
257
|
+
super.onServerChange({ filepath });
|
|
251
258
|
}
|
|
252
259
|
} catch (e) {
|
|
253
260
|
this.logger.error(e);
|
|
@@ -255,65 +262,56 @@ class ModernDevServer extends _prodServer.ModernServer {
|
|
|
255
262
|
}
|
|
256
263
|
}
|
|
257
264
|
createContext(req, res) {
|
|
258
|
-
return super.createContext(req, res, {
|
|
259
|
-
etag: true
|
|
260
|
-
});
|
|
265
|
+
return super.createContext(req, res, { etag: true });
|
|
261
266
|
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
runner,
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
const pluginMids = await runner.beforeDevServer(conf);
|
|
270
|
-
return [...setupMids, ...pluginMids].flat();
|
|
267
|
+
setupBeforeDevMiddleware() {
|
|
268
|
+
return __async(this, null, function* () {
|
|
269
|
+
const { runner, conf, dev } = this;
|
|
270
|
+
const setupMids = dev.before || [];
|
|
271
|
+
const pluginMids = yield runner.beforeDevServer(conf);
|
|
272
|
+
return [...setupMids, ...pluginMids].flat();
|
|
273
|
+
});
|
|
271
274
|
}
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
runner,
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
const pluginMids = await runner.afterDevServer(conf);
|
|
280
|
-
return [...pluginMids, ...setupMids].flat();
|
|
275
|
+
setupAfterDevMiddleware() {
|
|
276
|
+
return __async(this, null, function* () {
|
|
277
|
+
const { runner, conf, dev } = this;
|
|
278
|
+
const setupMids = dev.after || [];
|
|
279
|
+
const pluginMids = yield runner.afterDevServer(conf);
|
|
280
|
+
return [...pluginMids, ...setupMids].flat();
|
|
281
|
+
});
|
|
281
282
|
}
|
|
282
283
|
cleanSSRCache() {
|
|
283
|
-
const {
|
|
284
|
-
distDir
|
|
285
|
-
} = this;
|
|
284
|
+
const { distDir } = this;
|
|
286
285
|
const bundles = this.router.getBundles();
|
|
287
|
-
bundles.forEach(bundle => {
|
|
288
|
-
const filepath =
|
|
286
|
+
bundles.forEach((bundle) => {
|
|
287
|
+
const filepath = import_path.default.join(distDir, bundle);
|
|
289
288
|
if (require.cache[filepath]) {
|
|
290
289
|
delete require.cache[filepath];
|
|
291
290
|
}
|
|
292
291
|
});
|
|
293
|
-
const loadable =
|
|
292
|
+
const loadable = import_path.default.join(distDir, import_constants.LOADABLE_STATS_FILE);
|
|
294
293
|
if (require.cache[loadable]) {
|
|
295
294
|
delete require.cache[loadable];
|
|
296
295
|
}
|
|
297
296
|
}
|
|
298
297
|
startWatcher() {
|
|
299
|
-
var
|
|
300
|
-
const {
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
const
|
|
310
|
-
|
|
311
|
-
|
|
298
|
+
var _a;
|
|
299
|
+
const { pwd, distDir } = this;
|
|
300
|
+
const { mock } = import_prod_server.AGGRED_DIR;
|
|
301
|
+
const defaultWatched = [
|
|
302
|
+
`${mock}/**/*`,
|
|
303
|
+
`${import_utils.SERVER_DIR}/**/*`,
|
|
304
|
+
`${import_utils.API_DIR}/**`,
|
|
305
|
+
`${import_utils.SHARED_DIR}/**/*`,
|
|
306
|
+
`${distDir}/${import_utils.LOADER_ROUTES_DIR}/**`
|
|
307
|
+
];
|
|
308
|
+
const watchOptions = (0, import_watcher.mergeWatchOptions)((_a = this.conf.server) == null ? void 0 : _a.watchOptions);
|
|
309
|
+
const defaultWatchedPaths = defaultWatched.map((p) => {
|
|
310
|
+
const finalPath = import_path.default.isAbsolute(p) ? p : import_path.default.join(pwd, p);
|
|
311
|
+
return import_path.default.normalize(finalPath);
|
|
312
312
|
});
|
|
313
|
-
const watcher = new
|
|
313
|
+
const watcher = new import_watcher.default();
|
|
314
314
|
watcher.createDepTree();
|
|
315
|
-
|
|
316
|
-
// 监听文件变动,如果有变动则给 client,也就是 start 启动的插件发消息
|
|
317
315
|
watcher.listen(defaultWatchedPaths, watchOptions, (filepath, event) => {
|
|
318
316
|
watcher.updateDepTree();
|
|
319
317
|
watcher.cleanDepCache(filepath);
|
|
@@ -325,4 +323,3 @@ class ModernDevServer extends _prodServer.ModernServer {
|
|
|
325
323
|
this.watcher = watcher;
|
|
326
324
|
}
|
|
327
325
|
}
|
|
328
|
-
exports.ModernDevServer = ModernDevServer;
|
|
@@ -1,15 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var stdin_exports = {};
|
|
19
|
+
__export(stdin_exports, {
|
|
20
|
+
DevServer: () => DevServer
|
|
5
21
|
});
|
|
6
|
-
exports
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
const createDevServer = options => {
|
|
10
|
-
return new
|
|
22
|
+
module.exports = __toCommonJS(stdin_exports);
|
|
23
|
+
var import_prod_server = require("@modern-js/prod-server");
|
|
24
|
+
var import_dev_server = require("./dev-server");
|
|
25
|
+
const createDevServer = (options) => {
|
|
26
|
+
return new import_dev_server.ModernDevServer(options);
|
|
11
27
|
};
|
|
12
|
-
class DevServer extends
|
|
28
|
+
class DevServer extends import_prod_server.Server {
|
|
13
29
|
constructor(options) {
|
|
14
30
|
super(options);
|
|
15
31
|
if (options.dev) {
|
|
@@ -17,4 +33,3 @@ class DevServer extends _prodServer.Server {
|
|
|
17
33
|
}
|
|
18
34
|
}
|
|
19
35
|
}
|
|
20
|
-
exports.DevServer = DevServer;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { getIpv4Interfaces, HMR_SOCK_PATH } from "@modern-js/utils";
|
|
2
|
+
var getDefaultDevOptions = function() {
|
|
3
|
+
var network = getIpv4Interfaces().find(function(item) {
|
|
4
|
+
return !item.internal;
|
|
5
|
+
});
|
|
6
|
+
return {
|
|
7
|
+
client: {
|
|
8
|
+
port: "8080",
|
|
9
|
+
path: HMR_SOCK_PATH,
|
|
10
|
+
host: (network === null || network === void 0 ? void 0 : network.address) || "localhost"
|
|
11
|
+
},
|
|
12
|
+
https: false,
|
|
13
|
+
devMiddleware: {
|
|
14
|
+
writeToDisk: true
|
|
15
|
+
},
|
|
16
|
+
watch: true,
|
|
17
|
+
hot: true,
|
|
18
|
+
liveReload: true
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export { getDefaultDevOptions };
|