Webpack,你会让我崩溃的。
在生产环境中,html-webpack-plugin能够正常工作。'dist'文件夹中装载了我的HTML模板,并插入了打包后的代码。很好,很酷。
然而,在webpack-dev-server中却不行。它似乎创建了自己的HTML页面,标题为“Webpack App”,然后提供服务。这是从哪里来的呢?我需要在开发和生产环境中保持一致,以便查看内容。我使用 webpack-merge 合并不同的配置。
- webpack: 4.29.6
- webpack-cli: 3.3.0
- webpack-dev-server: 3.2.1
- html-webpack-loader: 0.0.5,
- html-webpack-plugin: 3.0.7
webpack.common
module.exports = {
entry: [
"react-hot-loader/patch",
resolve("src", "entry.js")
],
output: {
filename: "bundle.js",
path: resolve('dist'),
publicPath: "/"
},
module: {
rules: [
{
test: /\.js$/,
exclude: [resolve(__dirname, 'node_modules')],
use: [{ loader: 'babel-loader'}]
},
{
test: /\.s(a|c)ss$/,
use: [{
loader: 'style-loader'
}, {
loader: 'css-loader'
}, {
loader: 'sass-loader'
}]
}
]
},
resolve: {
extensions: [".js", "jsx"],
alias: {
actions: resolve(__dirname, 'src', 'actions'),
components: resolve(__dirname, 'src', 'components'),
lib: resolve(__dirname, 'src', 'lib'),
routes: resolve(__dirname, 'src', 'routes'),
store: resolve(__dirname, 'src', 'store'),
styles: resolve(__dirname, 'src', 'styles'),
test: resolve(__dirname, 'src', 'test'),
},
modules: [
resolve(__dirname, 'node_modules'),
resolve(__dirname, 'src')
]
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new HtmlWebpackPlugin({
"template": resolve(__dirname, "src", "index.html"),
"filename": resolve(__dirname, "dist", "index.html"),
"hash": true,
"inject": true,
"compile": true,
"favicon": false,
"minify": true,
"cache": true,
"showErrors": true,
"chunks": "all",
"excludeChunks": [],
"title": "React Starter",
"xhtml": true,
"chunksSortMode": 'none' //fixes bug
}),
new CleanWebpackPlugin(['dist'])
]
}
webpack.dev
module.exports = merge(common, {
devtool: "eval-source-map",
mode: 'development',
devServer: {
host: 'localhost',
port: 3000,
open: true
}
});