@modern-js/server 1.1.2-beta.0 → 1.1.3

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 (52) hide show
  1. package/CHANGELOG.md +41 -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/render/cache/type.js +0 -1
  5. package/dist/js/modern/libs/route/index.js +4 -0
  6. package/dist/js/modern/libs/route/matcher.js +5 -1
  7. package/dist/js/modern/libs/serve-file.js +23 -25
  8. package/dist/js/modern/server/{web-server.js → dev-server/dev-server-split.js} +9 -7
  9. package/dist/js/modern/server/{dev-server.js → dev-server/dev-server.js} +41 -22
  10. package/dist/js/modern/server/dev-server/index.js +2 -0
  11. package/dist/js/modern/server/index.js +62 -62
  12. package/dist/js/modern/server/{api-server.js → modern-server-split.js} +6 -10
  13. package/dist/js/modern/server/modern-server.js +76 -27
  14. package/dist/js/modern/type.js +0 -1
  15. package/dist/js/modern/utils.js +2 -2
  16. package/dist/js/node/libs/hook-api/route.js +46 -0
  17. package/dist/js/node/libs/{hook-api.js → hook-api/template.js} +0 -0
  18. package/dist/js/node/libs/route/index.js +4 -0
  19. package/dist/js/node/libs/route/matcher.js +5 -1
  20. package/dist/js/node/libs/serve-file.js +25 -26
  21. package/dist/js/node/server/{api-server.js → dev-server/dev-server-split.js} +7 -12
  22. package/dist/js/node/server/{dev-server.js → dev-server/dev-server.js} +42 -21
  23. package/dist/js/node/server/dev-server/index.js +27 -0
  24. package/dist/js/node/server/index.js +69 -63
  25. package/dist/js/node/server/{web-server.js → modern-server-split.js} +10 -9
  26. package/dist/js/node/server/modern-server.js +78 -27
  27. package/dist/js/node/utils.js +2 -2
  28. package/dist/types/libs/hook-api/route.d.ts +13 -0
  29. package/dist/types/libs/{hook-api.d.ts → hook-api/template.d.ts} +0 -0
  30. package/dist/types/libs/route/index.d.ts +1 -0
  31. package/dist/types/libs/route/matcher.d.ts +1 -0
  32. package/dist/types/libs/serve-file.d.ts +1 -1
  33. package/dist/types/server/{web-server.d.ts → dev-server/dev-server-split.d.ts} +8 -8
  34. package/dist/types/server/{dev-server.d.ts → dev-server/dev-server.d.ts} +6 -5
  35. package/dist/types/server/dev-server/index.d.ts +2 -0
  36. package/dist/types/server/index.d.ts +3 -1
  37. package/dist/types/server/{api-server.d.ts → modern-server-split.d.ts} +4 -6
  38. package/dist/types/server/modern-server.d.ts +5 -3
  39. package/dist/types/utils.d.ts +1 -1
  40. package/package.json +17 -19
  41. package/src/libs/hook-api/route.ts +38 -0
  42. package/src/libs/{hook-api.ts → hook-api/template.ts} +0 -0
  43. package/src/libs/route/index.ts +4 -0
  44. package/src/libs/route/matcher.ts +5 -1
  45. package/src/libs/serve-file.ts +16 -20
  46. package/src/server/{web-server.ts → dev-server/dev-server-split.ts} +11 -10
  47. package/src/server/{dev-server.ts → dev-server/dev-server.ts} +56 -23
  48. package/src/server/dev-server/index.ts +2 -0
  49. package/src/server/index.ts +72 -46
  50. package/src/server/{api-server.ts → modern-server-split.ts} +10 -13
  51. package/src/server/modern-server.ts +82 -41
  52. 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,17 +223,15 @@ 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, _objectSpread(_objectSpread({}, apiExtension), {}, {
229
- modernJsConfig: this.conf
230
- }));
233
+ const apiExtension = mergeExtension(pluginAPIExt);
234
+ this.frameAPIHandler = await this.prepareAPIHandler(mode, apiExtension);
231
235
  }
232
236
  }
233
237
  /* —————————————————————— function will be overwrite —————————————————————— */
@@ -260,7 +264,7 @@ export class ModernServer {
260
264
  pwd: workDir,
261
265
  mode,
262
266
  config: extension,
263
- prefix
267
+ prefix: Array.isArray(prefix) ? prefix[0] : prefix
264
268
  }, {
265
269
  onLast: () => null
266
270
  });
@@ -275,10 +279,30 @@ export class ModernServer {
275
279
  conf
276
280
  } = this;
277
281
  const preMiddleware = await this.runner.preServerInit(conf);
278
- preMiddleware.forEach(mid => {
282
+ preMiddleware.flat().forEach(mid => {
279
283
  this.addHandler(mid);
280
284
  });
281
285
  }
286
+
287
+ prepareFavicons(favicon, faviconByEntries) {
288
+ const faviconNames = [];
289
+
290
+ if (favicon) {
291
+ faviconNames.push(favicon.substring(favicon.lastIndexOf('/') + 1));
292
+ }
293
+
294
+ if (faviconByEntries) {
295
+ Object.keys(faviconByEntries).forEach(f => {
296
+ const curFavicon = faviconByEntries[f];
297
+
298
+ if (curFavicon) {
299
+ faviconNames.push(curFavicon.substring(curFavicon.lastIndexOf('/') + 1));
300
+ }
301
+ });
302
+ }
303
+
304
+ return faviconNames;
305
+ }
282
306
  /* —————————————————————— private function —————————————————————— */
283
307
  // handler route.json, include api / csr / ssr
284
308
  // eslint-disable-next-line max-statements
@@ -288,7 +312,12 @@ export class ModernServer {
288
312
  const {
289
313
  req,
290
314
  res
291
- } = context; // match routes in the route spec
315
+ } = context;
316
+ await this.runner.beforeMatch({
317
+ context
318
+ }, {
319
+ onLast: noop
320
+ }); // match routes in the route spec
292
321
 
293
322
  const matched = this.router.match(context.url);
294
323
 
@@ -297,8 +326,23 @@ export class ModernServer {
297
326
  return;
298
327
  }
299
328
 
300
- const route = matched.generate();
301
- const params = matched.parseURLParams(context.url);
329
+ const routeAPI = createRouteAPI(matched, this.router);
330
+ await this.runner.afterMatch({
331
+ context,
332
+ routeAPI
333
+ }, {
334
+ onLast: noop
335
+ });
336
+
337
+ if (res.headersSent) {
338
+ return;
339
+ }
340
+
341
+ const {
342
+ current
343
+ } = routeAPI;
344
+ const route = current.generate();
345
+ const params = current.parseURLParams(context.url);
302
346
  context.setParams(params); // route is api service
303
347
 
304
348
  if (route.isApi) {
@@ -319,6 +363,11 @@ export class ModernServer {
319
363
  return;
320
364
  }
321
365
 
366
+ await this.runner.beforeRender({
367
+ context
368
+ }, {
369
+ onLast: noop
370
+ });
322
371
  const file = await this.routeRenderHandler(context, route);
323
372
 
324
373
  if (!file) {
@@ -1,2 +1 @@
1
- export {};
2
1
  export {};
@@ -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}/!(typings)/**`, `${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");