-
Notifications
You must be signed in to change notification settings - Fork 5
/
devServer.js
87 lines (57 loc) · 1.85 KB
/
devServer.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
72
73
74
75
76
77
78
79
80
81
82
83
/**
* Created by kimown on 4/23/16.
*
* doc: https://webpack.github.io/docs/webpack-dev-server.html
*/
'use strict';
const path = require('path');
let webpack = require('webpack');
let WebpackDevServer = require('webpack-dev-server');
let config = require('./webpack.config');
function devServer (base) {
let customConfig = _customConfig(config,base);
let contentBase = path.join(base,'public');
let server = new WebpackDevServer(webpack(customConfig), {
//serve static file in public directory
contentBase: contentBase,
//todo delete??
publicPath: '',
// hot module replacement
hot: true,
//unknown
historyApiFallback: true,
//noInfo: true
stats: { colors: true },
headers:{
'Access-Control-Allow-Origin':'*'
},
proxy: {
'/*': {
target: 'http://localhost:4001',
bypass: function(req,res) {
//by pass static file,eg :.js .css .md
//todo check static files
//todo inject js to html.
if(req.url=="/js/script.js"){
return "/app.js";
}else if(req.url.includes('.')){
return req.url;
}else{
return req.url+'/index.html';
}
}
}
}
});
server.listen(4001, 'localhost', function (err, result) {
if (err) console.log(err);
console.log('Listening at localhost:4001');
});
}
function _customConfig (config, base) {
//set absolute path for assets
config.entry.app[2] = path.join(base, "node_modules", "hexoserver",config.entry.app[2]);
config.resolve.root = [base];
return config;
}
module.exports = devServer;