Я использую webpack в проекте реагирования, и кажется, что HtmlWebpackPlugin
влияет на сервер разработки webpack странным образом, которого я не понимаю. Кажется, это позволяет мне перейти к 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
, чтобы увидеть свое веб-приложение. Если я попытаюсь просмотреть 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
. Вероятно, у вас есть еще одинindex.html
внутриsrc
, который загружается во втором случае. - person Prajwal   schedule 23.04.2018