//Утилита path используется для корретного полного пути к проекту
const path = require('path');
module.exports = {
//Генерация карты. Более подробная информация при отладке ошибок
devtool: 'source-map',
//Точка входа (index.js)
entry: {
app: "./src/JS/index.js"
},
//Сборка
output: {
//Имя сборки
//[name] - название точки входа (app__bundle.js)
filename: "[name]_bundle.js",
//Физическое размещение
path: path.resolve(__dirname, "./SPA_Build"),
//Путь на dev сервере
publicPath: "/SPA_Build"
},
//Дополнительная обработка файлов в процессе сборки
module: {
//Правила обработки
rules: [
//Обработка js
{
//Фильтр файлов. Регулярка. По расширению
test: /\.js$/,
//Тип обработки (из пакета)
loader: 'babel-loader',
//Искллючить из обработки файлы из папки node_modules (т.к. они уже скомпилированы)
exclude: ['/node_modules/', '/Enviroment']
},
//Конфигурация
{
//Фильтр файлов. Регулярка. По расширению
test: /\.js$/,
//Тип обработки (из пакета)
loader: 'babel-loader',
//Искллючить из обработки файлы из папки node_modules (т.к. они уже скомпилированы)
exclude: ['/node_modules/', '/src']
},
//Обработка jsx
{
// определяем тип файлов
test: /\.jsx?$/,
exclude: /(node_modules)/,
// определяем загрузчик
loader: "babel-loader"
},
//обработка CSS
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
},
//Обработка изображений
{
test: /\.(png|jpe?g|gif)$/i,
loader: 'file-loader',
options: {
//Сохраняет относительный путь к файлам
name: '[path][name].[ext]',
//Указывает какую папку выбрать в качестве корня для [path]
//Если его не будет то путь будет build/src/...
context: 'src',
//Заменяет public имя у ссылок
publicPath: 'SPA_Build'
}
}
]
},
//Парамтеры dev сервера
devServer: {
port: 8091,
//Выводить ошибки в браузер
overlay: true,
//Начальная страница
//openPage: 'SPA_Build/index.html',
//SPA route. Возвращать index если файл маршрута не найден
historyApiFallback: {
index: 'index.html'
},
proxy: {
//Адрес WevAPI
'/api/*': {
target: 'http://localhost:47780'
}
}
}
}