UNPKG

2.69 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.default = void 0;
9
10var _ndkLogger = _interopRequireDefault(require("@nuofe/ndk-logger"));
11
12var _chokidar = _interopRequireDefault(require("chokidar"));
13
14var _open = _interopRequireDefault(require("open"));
15
16var _path = _interopRequireDefault(require("path"));
17
18var _webpack = _interopRequireDefault(require("webpack"));
19
20var _webpackDevServer = _interopRequireDefault(require("webpack-dev-server"));
21
22var _config = _interopRequireDefault(require("./config"));
23
24const startServer = devServer => {
25 const {
26 buildConfig,
27 webpackConfig
28 } = _config.default.get('development');
29
30 const {
31 url,
32 port,
33 host
34 } = buildConfig;
35 const compiler = (0, _webpack.default)(webpackConfig);
36 const serverConfig = { ...webpackConfig.devServer
37 };
38 const server = new _webpackDevServer.default(compiler, serverConfig);
39 let opend = !!devServer && url === devServer.buildConfig.url && port === devServer.buildConfig.port;
40 compiler.hooks.done.tap('done', state => {
41 if (!state.hasErrors()) {
42 _ndkLogger.default.logTip(`Server is started at ${_ndkLogger.default.chalk.bold(url)}`);
43
44 _ndkLogger.default.logTip('Use Ctrl+C to close it...');
45
46 if (!opend) {
47 opend = true;
48 (0, _open.default)(url);
49 }
50 }
51 });
52 server.listen(port, host, error => {
53 if (error) {
54 console.error(error);
55 process.exit(1);
56 }
57 });
58 return {
59 buildConfig,
60 compiler,
61 server
62 };
63};
64
65var _default = () => {
66 const ndkConfigFile = 'ndk.config.js';
67 const cwd = process.cwd();
68
69 const ndkConfigPath = _path.default.resolve(cwd, ndkConfigFile);
70
71 const watcher = _chokidar.default.watch(cwd, {
72 ignored: ['**/node_modules/**', '**/.*/**', '**/.*', '**/Desktop.ini', '**/Thumbs.db', '**/*.bak', '**/*.log', '**/*.tmp'],
73 ignoreInitial: true
74 });
75
76 let devServer = startServer();
77 watcher.unwatch(_path.default.join(devServer.buildConfig.outputPath, '/**'));
78 watcher.on('all', () => {
79 delete require.cache[ndkConfigPath];
80
81 const {
82 buildConfig
83 } = _config.default.get('development');
84
85 if (buildConfig.outputPath !== devServer.buildConfig.outputPath) {
86 watcher.unwatch(_path.default.join(buildConfig.outputPath, '/**'));
87 }
88
89 if (JSON.stringify(buildConfig) !== JSON.stringify(devServer.buildConfig)) {
90 devServer.server.close();
91
92 _ndkLogger.default.clear();
93
94 _ndkLogger.default.logHint('> Restart Dev Server...');
95
96 devServer = startServer(devServer);
97 }
98 });
99};
100
101exports.default = _default;
\No newline at end of file