I want add multiple html page in my react project because at the moment I can't add react-router. I have a side menu component that in my design ( I haven't tried yet) will do this:
<div className="menu">
<ul className="menu-list">
<li><a href="page1.html">Page1</a></li>
<li><a href="page2.html">Page2</a></li>
</ul>
</div>
This is my actual web pack configuration:
var webpack = require('webpack');
var path = require('path');
var loaders = require('./webpack.loaders');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var DashboardPlugin = require('webpack-dashboard/plugin');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
const HOST = process.env.HOST || "127.0.0.1";
const PORT = process.env.PORT || "8888";
loaders.push({
test: /\.scss$/,
loaders: ['style-loader', 'css-loader?importLoaders=1', 'sass-loader'],
exclude: ['node_modules']
});
module.exports = {
entry: [
'react-hot-loader/patch',
'./src/index.jsx', // your app's entry point
],
devtool: process.env.WEBPACK_DEVTOOL || 'eval-source-map',
output: {
publicPath: '/',
path: path.join(__dirname, 'public'),
filename: 'bundle.js'
},
resolve: {
extensions: ['.js', '.jsx']
},
module: {
loaders
},
devServer: {
contentBase: "./public",
// do not print bundle build stats
noInfo: true,
// enable HMR
hot: true,
// embed the webpack-dev-server runtime into the bundle
inline: true,
// serve index.html in place of 404 responses to allow HTML5 history
historyApiFallback: true,
port: PORT,
host: HOST
},
plugins: [
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: '"development"'
}
}),
new webpack.NoEmitOnErrorsPlugin(),
new webpack.NamedModulesPlugin(),
new webpack.HotModuleReplacementPlugin(),
new ExtractTextPlugin({
filename: 'style.css',
allChunks: true
}),
new DashboardPlugin(),
new HtmlWebpackPlugin({
template: './src/template.html',
files: {
css: ['style.css'],
js: [ "bundle.js"],
}
}),
]
};
At the moment I have only one html page (template.html) my idea is to do something like this:
entry: {
page1: './src/page1',
page2: './src/page2.js'
},
output: {
path: path.resolve(__dirname, 'build', 'target'),
publicPath: '/',
filename: '[name].bundle.js',
chunkFilename: '[id].bundle_[chunkhash].js',
sourceMapFilename: '[file].map'
},
And then this:
plugins: [
new HtmlWebpackPlugin({
filename: 'page1.html',
template: 'src/page1.html',
chunks: ['page1']
}),
new HtmlWebpackPlugin({
filename: 'page2.html',
template: 'src/page2.html',
chunks: ['page2']
})
]
but I can't understand where insert react-hot-loader, and I don't know if this is the best solution for my problem.
答案 0 :(得分:0)
这是一个老问题,但我也在寻找解决方案。
你需要做的是这样的事情:
entry: {
page1: ['react-hot-loader/patch','./src/page1.js'],
page2: ['react-hot-loader/patch','./src/page2.js'],
},