将webpack dev server与多个条目和HMR一起使用
我的webpack.config.js中有3个条目,它们生成3个不同的HTML文件。我这样做是为了在不同的域上托管它们:将webpack dev server与多个条目和HMR一起使用,webpack,webpack-dev-server,webpack-2,webpack-hmr,hot-module-replacement,Webpack,Webpack Dev Server,Webpack 2,Webpack Hmr,Hot Module Replacement,我的webpack.config.js中有3个条目,它们生成3个不同的HTML文件。我这样做是为了在不同的域上托管它们: index.html= site.html= forms.html= 现在我有一个定制的dev服务器,它会启动webpack构建三次,这样我就可以指出索引文件应该是什么。我想做的是将其更改为单个服务器,并使用主机头来决定加载哪个索引文件 我尝试这样做的方式是: devServer: { host: '0.0.0.0', /// En
- index.html=
- site.html=
- forms.html=
devServer: {
host: '0.0.0.0',
/// Enable gzip
compress: true,
contentBase: './dist',
/* Theoretically, the public option is better but they only support a single host
*
* This is a security issue not using public.
* */
disableHostCheck: true,
// enable HMR on the server
hot: true,
overlay: true,
after: (app) => {
/* Server the dev settings that are normally injected via nginx */
app.get('/settings.js', function(req, res) {
const fullPath = path.join(__dirname, "settings.dev.js");
res.sendFile(fullPath);
});
app.get('*', function(req, res, next) {
const headers = req.headers;
const host = headers['host'];
if (
/* We only wan't to override GET */
(req.method !== 'GET') ||
/* They didn't send an accept header */
(!headers || typeof headers.accept !== 'string') ||
/* They prefer JSON */
(headers.accept.indexOf('application/json') === 0) ||
/* They don't want HTML */
(!acceptsHtml(headers.accept))
) {
console.log("TERMINATING EARLY", req.method, headers.accept);
return next();
}
let indexFile = 'index.html';
switch(host) {
case "site":
indexFile = 'site.html';
break;
case "forms":
indexFile = 'forms.html';
break;
}
console.log("BEFORE REQ URL", req.url);
req.url = `${indexFile}`;
console.log("AFTER REQ URL", req.url);
next();
});
},
}
这对网站的初始负载有效,但我得到404的其他一切。我应该怎么做而不是
req.url
?我无法使用res.sendFile
,因为webpack正在编译内存中的所有内容。是否使用多个编译器?