@modern-js/server 1.1.1-canary.3 → 1.1.3-beta.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 (50) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/js/modern/libs/hook-api/route.js +37 -0
  3. package/dist/js/modern/libs/{hook-api.js → hook-api/template.js} +0 -0
  4. package/dist/js/modern/libs/route/index.js +4 -0
  5. package/dist/js/modern/libs/route/matcher.js +5 -1
  6. package/dist/js/modern/libs/serve-file.js +23 -25
  7. package/dist/js/modern/server/{web-server.js → dev-server/dev-server-split.js} +9 -7
  8. package/dist/js/modern/server/{dev-server.js → dev-server/dev-server.js} +41 -22
  9. package/dist/js/modern/server/dev-server/index.js +2 -0
  10. package/dist/js/modern/server/index.js +61 -62
  11. package/dist/js/modern/server/{api-server.js → modern-server-split.js} +6 -10
  12. package/dist/js/modern/server/modern-server.js +78 -25
  13. package/dist/js/modern/utils.js +2 -2
  14. package/dist/js/node/libs/hook-api/route.js +46 -0
  15. package/dist/js/node/libs/{hook-api.js → hook-api/template.js} +0 -0
  16. package/dist/js/node/libs/route/index.js +4 -0
  17. package/dist/js/node/libs/route/matcher.js +5 -1
  18. package/dist/js/node/libs/serve-file.js +25 -26
  19. package/dist/js/node/server/{api-server.js → dev-server/dev-server-split.js} +7 -12
  20. package/dist/js/node/server/{dev-server.js → dev-server/dev-server.js} +42 -21
  21. package/dist/js/node/server/dev-server/index.js +27 -0
  22. package/dist/js/node/server/index.js +67 -63
  23. package/dist/js/node/server/{web-server.js → modern-server-split.js} +10 -9
  24. package/dist/js/node/server/modern-server.js +80 -25
  25. package/dist/js/node/utils.js +2 -2
  26. package/dist/types/libs/hook-api/route.d.ts +13 -0
  27. package/dist/types/libs/{hook-api.d.ts → hook-api/template.d.ts} +0 -0
  28. package/dist/types/libs/route/index.d.ts +1 -0
  29. package/dist/types/libs/route/matcher.d.ts +1 -0
  30. package/dist/types/libs/serve-file.d.ts +1 -1
  31. package/dist/types/server/{api-server.d.ts → dev-server/dev-server-split.d.ts} +7 -8
  32. package/dist/types/server/{dev-server.d.ts → dev-server/dev-server.d.ts} +6 -5
  33. package/dist/types/server/dev-server/index.d.ts +2 -0
  34. package/dist/types/server/index.d.ts +3 -1
  35. package/dist/types/server/{web-server.d.ts → modern-server-split.d.ts} +5 -4
  36. package/dist/types/server/modern-server.d.ts +7 -5
  37. package/dist/types/utils.d.ts +1 -1
  38. package/package.json +10 -10
  39. package/src/libs/hook-api/route.ts +38 -0
  40. package/src/libs/{hook-api.ts → hook-api/template.ts} +0 -0
  41. package/src/libs/route/index.ts +4 -0
  42. package/src/libs/route/matcher.ts +5 -1
  43. package/src/libs/serve-file.ts +16 -20
  44. package/src/server/{api-server.ts → dev-server/dev-server-split.ts} +9 -11
  45. package/src/server/{dev-server.ts → dev-server/dev-server.ts} +56 -23
  46. package/src/server/dev-server/index.ts +2 -0
  47. package/src/server/index.ts +69 -46
  48. package/src/server/{web-server.ts → modern-server-split.ts} +12 -10
  49. package/src/server/modern-server.ts +87 -40
  50. package/src/utils.ts +2 -2
@@ -11,10 +11,11 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
11
11
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
12
12
 
13
13
  /* eslint-disable max-lines */
14
+ import { createServer } from 'http';
14
15
  import util from 'util';
15
16
  import path from 'path';
16
17
  import { fs, ROUTE_SPEC_FILE } from '@modern-js/utils';
17
- import { gather, createMiddlewareCollecter } from '@modern-js/server-utils';
18
+ import { createMiddlewareCollecter } from '@modern-js/server-utils';
18
19
  import mime from 'mime-types';
19
20
  import axios from 'axios';
20
21
  import { RouteMatchManager } from "../libs/route";
@@ -25,7 +26,8 @@ import * as reader from "../libs/render/reader";
25
26
  import { createProxyHandler } from "../libs/proxy";
26
27
  import { createContext } from "../libs/context";
27
28
  import { AGGRED_DIR, ApiServerMode, ERROR_DIGEST, ERROR_PAGE_TEXT } from "../constants";
28
- import { createTemplateAPI } from "../libs/hook-api";
29
+ import { createTemplateAPI } from "../libs/hook-api/template";
30
+ import { createRouteAPI } from "../libs/hook-api/route";
29
31
  const API_DIR = './api';
30
32
  const SERVER_DIR = './server';
31
33
  export class ModernServer {
@@ -40,7 +42,7 @@ export class ModernServer {
40
42
  staticGenerate,
41
43
  logger,
42
44
  measure
43
- }, runner) {
45
+ }) {
44
46
  this.pwd = void 0;
45
47
  this.distDir = void 0;
46
48
  this.workDir = void 0;
@@ -48,9 +50,9 @@ export class ModernServer {
48
50
  this.conf = void 0;
49
51
  this.handlers = [];
50
52
  this.presetRoutes = void 0;
53
+ this.runner = void 0;
51
54
  this.logger = void 0;
52
55
  this.measure = void 0;
53
- this.runner = void 0;
54
56
  this.isDev = false;
55
57
  this.staticFileHandler = void 0;
56
58
  this.routeRenderHandler = void 0;
@@ -67,7 +69,6 @@ export class ModernServer {
67
69
  this.distDir = path.join(pwd, config.output.path || '');
68
70
  this.workDir = this.isDev ? pwd : this.distDir;
69
71
  this.conf = config;
70
- this.runner = runner;
71
72
  this.logger = logger;
72
73
  this.measure = measure;
73
74
  this.router = new RouteMatchManager();
@@ -86,9 +87,10 @@ export class ModernServer {
86
87
  } // server prepare
87
88
 
88
89
 
89
- async init() {
90
+ async init(runner) {
90
91
  var _conf$bff;
91
92
 
93
+ this.runner = runner;
92
94
  const {
93
95
  distDir,
94
96
  isDev,
@@ -120,12 +122,17 @@ export class ModernServer {
120
122
  }
121
123
 
122
124
  await this.prepareFrameHandler();
125
+ const {
126
+ favicon,
127
+ faviconByEntries
128
+ } = this.conf.output;
129
+ const favicons = this.prepareFavicons(favicon, faviconByEntries); // Only work when without setting `assetPrefix`.
130
+ // Setting `assetPrefix` means these resources should be uploaded to CDN.
131
+
132
+ const staticPathRegExp = new RegExp(`^/(static/|upload/|favicon.ico|icon.png${favicons.length > 0 ? `|${favicons.join('|')}` : ''})`);
123
133
  this.staticFileHandler = createStaticFileHandler([{
124
- path: '/static/',
125
- target: path.join(distDir, 'static')
126
- }, {
127
- path: '/upload/',
128
- target: path.join(distDir, 'upload')
134
+ path: staticPathRegExp,
135
+ target: distDir
129
136
  }]);
130
137
  this.routeRenderHandler = createRenderHandler({
131
138
  distDir,
@@ -148,6 +155,10 @@ export class ModernServer {
148
155
 
149
156
  close() {
150
157
  reader.close();
158
+ }
159
+
160
+ async createHTTPServer(handler) {
161
+ return createServer(handler);
151
162
  } // warmup ssr function
152
163
 
153
164
 
@@ -195,12 +206,7 @@ export class ModernServer {
195
206
  const {
196
207
  workDir,
197
208
  runner
198
- } = this; // inner tool, gather user inject
199
-
200
- const {
201
- api: userAPIExt,
202
- web: userWebExt
203
- } = gather(workDir); // server hook, gather plugin inject
209
+ } = this; // server hook, gather plugin inject
204
210
 
205
211
  const _createMiddlewareColl = createMiddlewareCollecter(),
206
212
  {
@@ -217,15 +223,17 @@ export class ModernServer {
217
223
  const serverDir = path.join(workDir, SERVER_DIR); // get api or web server handler from server-framework plugin
218
224
 
219
225
  if (await fs.pathExists(path.join(serverDir))) {
220
- const webExtension = mergeExtension(pluginWebExt, userWebExt);
226
+ const webExtension = mergeExtension(pluginWebExt);
221
227
  this.frameWebHandler = await this.prepareWebHandler(webExtension);
222
228
  }
223
229
 
224
230
  if (fs.existsSync(apiDir)) {
225
231
  const mode = fs.existsSync(path.join(apiDir, AGGRED_DIR.lambda)) ? ApiServerMode.frame : ApiServerMode.func; // if use lambda/, mean framework style of writing, then discard user extension
226
232
 
227
- const apiExtension = mergeExtension(pluginAPIExt, mode === ApiServerMode.frame ? [] : userAPIExt);
228
- this.frameAPIHandler = await this.prepareAPIHandler(mode, apiExtension);
233
+ const apiExtension = mergeExtension(pluginAPIExt);
234
+ this.frameAPIHandler = await this.prepareAPIHandler(mode, _objectSpread(_objectSpread({}, apiExtension), {}, {
235
+ modernJsConfig: this.conf
236
+ }));
229
237
  }
230
238
  }
231
239
  /* —————————————————————— function will be overwrite —————————————————————— */
@@ -258,7 +266,7 @@ export class ModernServer {
258
266
  pwd: workDir,
259
267
  mode,
260
268
  config: extension,
261
- prefix
269
+ prefix: Array.isArray(prefix) ? prefix[0] : prefix
262
270
  }, {
263
271
  onLast: () => null
264
272
  });
@@ -273,10 +281,30 @@ export class ModernServer {
273
281
  conf
274
282
  } = this;
275
283
  const preMiddleware = await this.runner.preServerInit(conf);
276
- preMiddleware.forEach(mid => {
284
+ preMiddleware.flat().forEach(mid => {
277
285
  this.addHandler(mid);
278
286
  });
279
287
  }
288
+
289
+ prepareFavicons(favicon, faviconByEntries) {
290
+ const faviconNames = [];
291
+
292
+ if (favicon) {
293
+ faviconNames.push(favicon.substring(favicon.lastIndexOf('/') + 1));
294
+ }
295
+
296
+ if (faviconByEntries) {
297
+ Object.keys(faviconByEntries).forEach(f => {
298
+ const curFavicon = faviconByEntries[f];
299
+
300
+ if (curFavicon) {
301
+ faviconNames.push(curFavicon.substring(curFavicon.lastIndexOf('/') + 1));
302
+ }
303
+ });
304
+ }
305
+
306
+ return faviconNames;
307
+ }
280
308
  /* —————————————————————— private function —————————————————————— */
281
309
  // handler route.json, include api / csr / ssr
282
310
  // eslint-disable-next-line max-statements
@@ -286,7 +314,12 @@ export class ModernServer {
286
314
  const {
287
315
  req,
288
316
  res
289
- } = context; // match routes in the route spec
317
+ } = context;
318
+ await this.runner.beforeMatch({
319
+ context
320
+ }, {
321
+ onLast: noop
322
+ }); // match routes in the route spec
290
323
 
291
324
  const matched = this.router.match(context.url);
292
325
 
@@ -295,8 +328,23 @@ export class ModernServer {
295
328
  return;
296
329
  }
297
330
 
298
- const route = matched.generate();
299
- const params = matched.parseURLParams(context.url);
331
+ const routeAPI = createRouteAPI(matched, this.router);
332
+ await this.runner.afterMatch({
333
+ context,
334
+ routeAPI
335
+ }, {
336
+ onLast: noop
337
+ });
338
+
339
+ if (res.headersSent) {
340
+ return;
341
+ }
342
+
343
+ const {
344
+ current
345
+ } = routeAPI;
346
+ const route = current.generate();
347
+ const params = current.parseURLParams(context.url);
300
348
  context.setParams(params); // route is api service
301
349
 
302
350
  if (route.isApi) {
@@ -317,6 +365,11 @@ export class ModernServer {
317
365
  return;
318
366
  }
319
367
 
368
+ await this.runner.beforeRender({
369
+ context
370
+ }, {
371
+ onLast: noop
372
+ });
320
373
  const file = await this.routeRenderHandler(context, route);
321
374
 
322
375
  if (!file) {
@@ -1,7 +1,7 @@
1
- export const mergeExtension = (users, plugins) => {
1
+ export const mergeExtension = users => {
2
2
  const output = [];
3
3
  return {
4
- middleware: output.concat(users).concat(plugins)
4
+ middleware: output.concat(users)
5
5
  };
6
6
  };
7
7
  export const toMessage = (dig, e) => {
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createRouteAPI = void 0;
7
+
8
+ class RouteAPI {
9
+ constructor(matched, router) {
10
+ this.router = void 0;
11
+ this.current = void 0;
12
+ this.current = matched;
13
+ this.router = router;
14
+ }
15
+
16
+ cur() {
17
+ return this.current.generate();
18
+ }
19
+
20
+ get(entryName) {
21
+ const {
22
+ router
23
+ } = this;
24
+ const matched = router.matchEntry(entryName);
25
+ return matched ? matched.generate() : null;
26
+ }
27
+
28
+ use(entryName) {
29
+ const {
30
+ router
31
+ } = this;
32
+ const matched = router.matchEntry(entryName);
33
+
34
+ if (matched) {
35
+ this.current = matched;
36
+ return true;
37
+ } else {
38
+ return false;
39
+ }
40
+ }
41
+
42
+ }
43
+
44
+ const createRouteAPI = (matched, router) => new RouteAPI(matched, router);
45
+
46
+ exports.createRouteAPI = createRouteAPI;
@@ -64,6 +64,10 @@ class RouteMatchManager {
64
64
  return best;
65
65
  }
66
66
 
67
+ matchEntry(entryname) {
68
+ return this.matchers.find(matcher => matcher.matchEntry(entryname));
69
+ }
70
+
67
71
  getBundles() {
68
72
  const bundles = this.specs.filter(route => route.isSSR).map(route => route.bundle);
69
73
  return bundles;
@@ -12,7 +12,7 @@ var _pathToRegexp = require("path-to-regexp");
12
12
  var _route = require("./route");
13
13
 
14
14
  // eslint-disable-next-line no-useless-escape
15
- const regCharsDetector = /[^a-zA-Z\-_0-9\/]/;
15
+ const regCharsDetector = /[^a-zA-Z\-_0-9\/\.]/;
16
16
 
17
17
  class RouteMatcher {
18
18
  constructor(spec) {
@@ -68,6 +68,10 @@ class RouteMatcher {
68
68
 
69
69
  return false;
70
70
  }
71
+ }
72
+
73
+ matchEntry(entryName) {
74
+ return this.spec.entryName === entryName;
71
75
  } // compiler urlPath to regexp if necessary
72
76
 
73
77
 
@@ -7,36 +7,35 @@ exports.createStaticFileHandler = void 0;
7
7
 
8
8
  var _serveStatic = _interopRequireDefault(require("serve-static"));
9
9
 
10
+ var _utils = require("@modern-js/utils");
11
+
10
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
13
 
12
14
  // Todo 看看是不是能 fork 一份,即使命中也返回
13
- const createStaticFileHandler = rules => {
14
- const middlewares = rules.reduce((map, rule) => {
15
- map[rule.path] = (0, _serveStatic.default)(rule.target);
16
- return map;
17
- }, {}); // eslint-disable-next-line consistent-return
18
-
19
- return async (context, next) => {
20
- const {
21
- url: requestUrl,
22
- req,
23
- res
24
- } = context;
25
- const hit = Object.keys(middlewares).find(u => requestUrl.startsWith(u));
26
-
27
- if (hit) {
28
- // when matches static resources, delete the first layer of req.url
29
- const removed = hit;
30
- context.url = requestUrl.slice(removed.length - 1);
31
- middlewares[hit](req, res, () => {
32
- // will invok next, recover req.url
33
- context.url = removed + context.url;
34
- next();
35
- });
36
- } else {
37
- return next();
15
+ const createStaticFileHandler = rules => // eslint-disable-next-line consistent-return
16
+ async (context, next) => {
17
+ const {
18
+ url: requestUrl,
19
+ req,
20
+ res
21
+ } = context;
22
+ const hitRule = rules.find(item => {
23
+ if ((0, _utils.isString)(item.path) && requestUrl.startsWith(item.path)) {
24
+ return true;
25
+ } else if ((0, _utils.isRegExp)(item.path) && item.path.test(requestUrl)) {
26
+ return true;
38
27
  }
39
- };
28
+
29
+ return false;
30
+ });
31
+
32
+ if (hitRule) {
33
+ (0, _serveStatic.default)(hitRule.target)(req, res, () => {
34
+ next();
35
+ });
36
+ } else {
37
+ return next();
38
+ }
40
39
  };
41
40
 
42
41
  exports.createStaticFileHandler = createStaticFileHandler;
@@ -3,31 +3,26 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.APIModernServer = exports.APIModernDevServer = void 0;
6
+ exports.WebModernDevServer = exports.APIModernDevServer = void 0;
7
7
 
8
8
  var _devServer = require("./dev-server");
9
9
 
10
- var _modernServer = require("./modern-server");
11
-
12
- class APIModernServer extends _modernServer.ModernServer {
13
- prepareWebHandler(_) {
10
+ class WebModernDevServer extends _devServer.ModernDevServer {
11
+ prepareAPIHandler(_m, _) {
14
12
  return null;
15
13
  }
16
14
 
17
- async prepareAPIHandler(mode, extension) {
18
- return super.prepareAPIHandler(mode, extension);
15
+ async prepareWebHandler(extension) {
16
+ return super.prepareWebHandler(extension);
19
17
  }
20
18
 
21
19
  filterRoutes(routes) {
22
- return routes.filter(route => route.isApi);
23
- }
24
-
25
- async preServerInit() {// noop
20
+ return routes.filter(route => route.entryName);
26
21
  }
27
22
 
28
23
  }
29
24
 
30
- exports.APIModernServer = APIModernServer;
25
+ exports.WebModernDevServer = WebModernDevServer;
31
26
 
32
27
  class APIModernDevServer extends _devServer.ModernDevServer {
33
28
  prepareWebHandler(_) {
@@ -5,31 +5,35 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.ModernDevServer = void 0;
7
7
 
8
+ var _http = require("http");
9
+
8
10
  var _path = _interopRequireDefault(require("path"));
9
11
 
12
+ var _https = require("https");
13
+
10
14
  var _utils = require("@modern-js/utils");
11
15
 
12
16
  var _webpackDevMiddleware = _interopRequireDefault(require("webpack-dev-middleware"));
13
17
 
14
- var _mock = require("../dev-tools/mock");
18
+ var _modernServer = require("../modern-server");
15
19
 
16
- var _proxy = require("../libs/proxy");
20
+ var _mock = require("../../dev-tools/mock");
17
21
 
18
- var _socketServer = _interopRequireDefault(require("../dev-tools/socket-server"));
22
+ var _proxy = require("../../libs/proxy");
19
23
 
20
- var _devServerPlugin = _interopRequireDefault(require("../dev-tools/dev-server-plugin"));
24
+ var _socketServer = _interopRequireDefault(require("../../dev-tools/socket-server"));
21
25
 
22
- var _launchEditor = require("../dev-tools/launch-editor");
26
+ var _devServerPlugin = _interopRequireDefault(require("../../dev-tools/dev-server-plugin"));
23
27
 
24
- var _register = require("../dev-tools/babel/register");
28
+ var _launchEditor = require("../../dev-tools/launch-editor");
25
29
 
26
- var reader = _interopRequireWildcard(require("../libs/render/reader"));
30
+ var _register = require("../../dev-tools/babel/register");
27
31
 
28
- var _watcher = _interopRequireDefault(require("../dev-tools/watcher"));
32
+ var reader = _interopRequireWildcard(require("../../libs/render/reader"));
29
33
 
30
- var _modernServer = require("./modern-server");
34
+ var _watcher = _interopRequireDefault(require("../../dev-tools/watcher"));
31
35
 
32
- var _constants = require("../constants");
36
+ var _constants = require("../../constants");
33
37
 
34
38
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
39
 
@@ -54,8 +58,8 @@ const DEFAULT_DEV_OPTIONS = {
54
58
  };
55
59
 
56
60
  class ModernDevServer extends _modernServer.ModernServer {
57
- constructor(options, runner) {
58
- super(options, runner); // set webpack compiler
61
+ constructor(options) {
62
+ super(options); // set webpack compiler
59
63
 
60
64
  this.devProxyHandler = null;
61
65
  this.mockHandler = null;
@@ -67,18 +71,18 @@ class ModernDevServer extends _modernServer.ModernServer {
67
71
  this.compiler = options.compiler; // set dev server options, like webpack-dev-server
68
72
 
69
73
  this.dev = typeof options.dev === 'boolean' ? DEFAULT_DEV_OPTIONS : options.dev;
74
+ (0, _register.enableRegister)(this.pwd, this.conf);
70
75
  } // Complete the preparation of services
71
76
 
72
77
 
73
- async init() {
78
+ async init(runner) {
74
79
  var _conf$tools, _conf$tools$devServer;
75
80
 
76
81
  const {
77
82
  conf,
78
83
  pwd,
79
84
  compiler
80
- } = this;
81
- (0, _register.enableRegister)(pwd, conf); // mock handler
85
+ } = this; // mock handler
82
86
 
83
87
  this.mockHandler = (0, _mock.createMockHandler)({
84
88
  pwd
@@ -113,7 +117,7 @@ class ModernDevServer extends _modernServer.ModernServer {
113
117
  this.addHandler(devMiddlewareHandler);
114
118
  }
115
119
 
116
- await super.init(); // watch mock/ server/ api/ dir file change
120
+ await super.init(runner); // watch mock/ server/ api/ dir file change
117
121
 
118
122
  this.startWatcher();
119
123
  }
@@ -124,6 +128,7 @@ class ModernDevServer extends _modernServer.ModernServer {
124
128
  this.cleanSSRCache(); // reset static file
125
129
 
126
130
  reader.updateFile();
131
+ this.runner.reset();
127
132
  }
128
133
 
129
134
  onListening(app) {
@@ -140,6 +145,24 @@ class ModernDevServer extends _modernServer.ModernServer {
140
145
  resolve();
141
146
  });
142
147
  });
148
+ }
149
+
150
+ async createHTTPServer(handler) {
151
+ const {
152
+ dev
153
+ } = this;
154
+ const devHttpsOption = typeof dev === 'object' && dev.https;
155
+
156
+ if (devHttpsOption) {
157
+ const {
158
+ genHttpsOptions
159
+ } = require("../../dev-tools/https");
160
+
161
+ const httpsOptions = await genHttpsOptions(devHttpsOption);
162
+ return (0, _https.createServer)(httpsOptions, handler);
163
+ } else {
164
+ return (0, _http.createServer)(handler);
165
+ }
143
166
  } // set up plugin to each compiler
144
167
  // register hooks for each compilation, update socket stats if recompiled
145
168
  // start dev middleware
@@ -234,18 +257,16 @@ class ModernDevServer extends _modernServer.ModernServer {
234
257
  pwd
235
258
  } = this;
236
259
  const {
237
- mock,
238
- server,
239
- api,
240
- shared
260
+ mock
241
261
  } = _constants.AGGRED_DIR;
242
- const defaultWatched = [`${pwd}/${mock}/**/*`, `${pwd}/${server}/**/*`, `${pwd}/${api}/**/*`, `${pwd}/${shared}/**/*`];
262
+ const defaultWatched = [`${pwd}/${mock}/**/*`, `${pwd}/${_utils.SERVER_DIR}/**/*`, `${pwd}/${_utils.API_DIR}/**/*`, `${pwd}/${_utils.SHARED_DIR}/**/*`];
243
263
  const watcher = new _watcher.default();
244
264
  watcher.createDepTree(); // 监听文件变动,如果有变动则给 client,也就是 start 启动的插件发消息
245
265
 
246
266
  watcher.listen(defaultWatched, filepath => {
247
267
  watcher.updateDepTree();
248
268
  watcher.cleanDepCache(filepath);
269
+ this.runner.reset();
249
270
 
250
271
  if (filepath.startsWith(`${pwd}/${mock}`)) {
251
272
  this.mockHandler = (0, _mock.createMockHandler)({
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "APIModernDevServer", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _devServerSplit.APIModernDevServer;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "ModernDevServer", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _devServer.ModernDevServer;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "WebModernDevServer", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _devServerSplit.WebModernDevServer;
22
+ }
23
+ });
24
+
25
+ var _devServerSplit = require("./dev-server-split");
26
+
27
+ var _devServer = require("./dev-server");