UNPKG

2.72 kBJavaScriptView Raw
1const webpack = require("webpack");
2const mock = require("./mock");
3const chalk = require("chalk");
4const devWebpackConf = require("../configuration/webpack/devWebpackConf");
5const getConf = require("@ksyun/ksr-libs/libs/getConf");
6const _ = require("lodash");
7const koaWebpack = require("koa-webpack");
8const reporter = require("../configuration/webpack/reporter");
9const Vray = require("vray");
10const app = new Vray();
11
12module.exports = function(program) {
13 const base = devWebpackConf(program, "dev");
14 const baseWebpack = base.webpack;
15 const baseKsr = base.ksr;
16 const baseKsrServe = base.ksrServe;
17
18 const ksrServe = getConf(program.serverConfig);
19
20 const coverConfig = {};
21 const config = _.defaults({}, coverConfig, program, baseKsrServe, ksrServe);
22
23 const mergeProxy = _.defaults(
24 {},
25 getConf(baseKsrServe["proxy"]),
26 getConf(ksrServe["proxy"]),
27 getConf(program.proxy)
28 );
29
30 const port = config.port;
31 const host = config.host;
32 const mockfile = config.mock;
33 const mhost = config.mhost;
34 const mport = config.mport;
35 const staticDir = config.static;
36 const middleware = config.middleware;
37
38 app.mountProxy(mergeProxy);
39 app.mountDefaultMiddle();
40 app.mountMiddle(middleware);
41 app.mountStatic(staticDir);
42
43 const compiler = webpack(baseWebpack);
44 const hot = _.defaultsDeep(baseKsr.hot, {
45 allEntries: true,
46 reload: true,
47 hmr: true,
48 host: host === '0.0.0.0' ? {
49 client: '*',
50 server: host
51 } : host ,
52 autoConfigure: true
53 });
54 const dev = _.defaultsDeep(baseKsr.dev, {
55 headers: {
56 "Access-Control-Allow-Origin": "*",
57 "Access-Control-Request-Method": "GET,POST,OPTIONS,DELETE,PUT",
58 "Access-Control-Allow-Headers":
59 "X-Requested-With,User-Agent,Keep-Alive,Content-Type",
60 Pragma: "no-cache",
61 ETag: "no-cache",
62 "Cache-Control": "no-cache, no-store, must-revalidate",
63 Expires: "Wed, 26 Feb 1997 08:21:57 GMT"
64 },
65 // contentBase: baseWebpack.output.path,
66 publicPath: baseWebpack.output.publicPath,
67 reporter: reporter,
68 watchOptions: {
69 aggregateTimeout: 500,
70 poll: 1000,
71 ignored: /node_modules/
72 }
73 });
74
75 koaWebpack({
76 compiler: compiler,
77 devMiddleware: dev,
78 hotClient: hot
79 }).then(devMiddle => {
80 app.use(devMiddle);
81 app.listen(port, host, function(err) {
82 if (err) {
83 console.log(chalk.red(err));
84 process.exit(1);
85 }
86 console.log(
87 chalk.green(
88 `Dev server listening at ${chalk.underline(`http://${host}:${port}`)}`
89 )
90 );
91 });
92 //mock serve
93 const mockOpt = {
94 files: mockfile,
95 host: mhost,
96 port: mport
97 };
98
99 mock(mockOpt);
100 });
101};