【发布时间】:2018-10-03 15:49:43
【问题描述】:
我在 React 项目中使用 Webpack,似乎 HtmlWebpackPlugin 以一种我不明白的奇怪方式影响了 webpack dev server。
无论该文件在代码库中的哪个位置,我似乎都可以浏览到 index.html,这是单独使用开发服务器无法实现的。
假设我有以下目录结构:
myproj/
|- package.json
|- webpack.config.js
|- src/
|- index.html
|- index.jsx
还有一个如下所示的webpack.config.js 文件:
const path = require('path');
module.exports = {
entry: './src/index.jsx',
devServer: {
contentBase: __dirname
}
};
然后我运行webpack-dev-server --mode=development。由于我将devServer.contentBase 设置为当前目录(myproj),并且index.html 文件位于myproj/src 中,因此我必须浏览到http://localhost:8080/src/index.html 才能查看我的Web 应用程序。如果我尝试浏览http://localhost:8080/index.html,那么我会得到一个 404。这对我来说很有意义。
然后我添加HtmlWebpackPlugin,在webpack.config.js 内没有任何改变:
const HtmlWebpackPlugin = require('html-webpack-plugin');
....
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html'
})
]
现在我突然可以浏览到 http://localhost:8080/index.html 就好了。事实上,我可以点击http://localhost:8080/index.html 或http://localhost:8080/src/index.html。
那是怎么回事? HtmlWebpackPlugin 做了什么让这成为可能?
【问题讨论】:
-
它会在
root为您创建 html 文件。可能你在src内还有另一个index.html,它会在第二种情况下加载。 -
@Prajwal 感谢您提供的信息。所以我猜和bundle.js文件一样,这个index.html文件只存在于内存中?我没有看到它被写入任何地方的磁盘。
标签: webpack webpack-dev-server html-webpack-plugin