1 | const fs = require('fs');
|
2 | const path = require('path');
|
3 |
|
4 | const Handlebars = require('handlebars');
|
5 | const open = require('open');
|
6 | const express = require('express');
|
7 | const cors = require('cors');
|
8 | const webpackDevMiddleware = require('webpack-dev-middleware');
|
9 | const webpack = require('webpack');
|
10 | const log = require('fancy-log');
|
11 |
|
12 |
|
13 |
|
14 | const taskDev = function ({ webpackConfig, demo, port, devCors, demoEntryList }) {
|
15 |
|
16 | const dev = function () {
|
17 |
|
18 | const config = webpackConfig;
|
19 | const app = express();
|
20 | const compiler = webpack(config);
|
21 | if (devCors) {
|
22 | app.use(cors());
|
23 | }
|
24 |
|
25 | app.get('/', function (req, res) {
|
26 | const templateStr = fs.readFileSync(
|
27 | path.join(__dirname, '../space/demo-list.handlebars'),
|
28 | 'utf-8'
|
29 | );
|
30 | const template = Handlebars.compile(templateStr);
|
31 |
|
32 | const data = {
|
33 | demos: demoEntryList.map(item => {
|
34 | return { name: item }
|
35 | })
|
36 | }
|
37 | res.send(template(data));
|
38 | });
|
39 |
|
40 | app.use(express.static(demo));
|
41 |
|
42 | app.use(webpackDevMiddleware(compiler, {
|
43 | publicPath: config.output.publicPath
|
44 | }));
|
45 |
|
46 | app.listen(port, function () {
|
47 | log('[webpack-dev-server]', `started at port ${port}`);
|
48 | });
|
49 |
|
50 | open(`http://127.0.0.1:${port}/`);
|
51 | }
|
52 | return dev;
|
53 | }
|
54 |
|
55 | module.exports = taskDev; |
\ | No newline at end of file |