This repository was archived by the owner on Dec 8, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 28
/
Copy pathserve.js
71 lines (59 loc) · 1.95 KB
/
serve.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*jshint node: true*/
'use strict';
const portfinder = require('portfinder');
const logger = require('../utils/logger');
const assetsProcessor = require('../lib/assets-processor');
/**
* Let users configure port via skyuxconfig.json first.
* Else another plugin has specified devServer.port, use it.
* Else, find us an available port.
* @name getPort
* @returns {Number} port
*/
function getPort(config, skyPagesConfig) {
return new Promise((resolve, reject) => {
if (skyPagesConfig.app && skyPagesConfig.app.port) {
resolve(skyPagesConfig.app.port);
} else if (config.devServer && config.devServer.port) {
resolve(config.devServer.port);
} else {
portfinder.getPortPromise()
.then(port => resolve(port))
.catch(err => reject(err));
}
});
}
/**
* Executes the serve command.
* @name serve
* @name {Object} argv
* @name {SkyPagesConfig} skyPagesConfig
* @name {Webpack} webpack
* @name {WebpackDevServer} WebpackDevServer
* @returns null
*/
function serve(argv, skyPagesConfig, webpack, WebpackDevServer) {
const webpackConfig = require('../config/webpack/serve.webpack.config');
let config = webpackConfig.getWebpackConfig(argv, skyPagesConfig);
getPort(config, skyPagesConfig).then(port => {
const localUrl = `https://localhost:${port}`;
assetsProcessor.setSkyAssetsLoaderUrl(config, skyPagesConfig, localUrl);
// Save our found or defined port
config.devServer.port = port;
/* istanbul ignore else */
if (config.devServer.inline) {
const hot = `webpack-dev-server/client?${localUrl}`;
Object.keys(config.entry).forEach((entry) => {
config.entry[entry].unshift(hot);
});
}
const compiler = webpack(config);
const server = new WebpackDevServer(compiler, config.devServer);
server.listen(config.devServer.port, (err) => {
if (err) {
logger.error(err);
}
});
}).catch(err => logger.error(err));
}
module.exports = serve;