
//Утилита path используется для корретного полного пути к проекту
const path = require('path');


module.exports = {

    //Генерация карты. Более подробная информация при отладке ошибок
    devtool: 'source-map',

    //Точка входа (index.js)
    entry: {
        app: "./src/index.js"
    },    

    //Сборка
    output: {
        //Имя сборки
        //[name] - название точки входа (app__bundle.js)
        filename: "[name]_bundle.js",
        //Физическое размещение
        path: path.resolve(__dirname, "./build"),
        //Путь на dev сервере
        publicPath: "/build"
    },

    //Дополнительная обработка файлов в процессе сборки
    module: {
        //Правила обработки
        rules: [

        //Обработка js
            {
                //Фильтр файлов. Регулярка. По расширению
                test: /\.js$/,
                //Тип обработки (из пакета)
                loader: 'babel-loader',
                //Искллючить из обработки файлы из папки node_modules (т.к. они уже скомпилированы)
                exclude: '/node_modules/'
            },
        //Обработка jsx
            {
                // определяем тип файлов
                test: /\.jsx?$/, 
                exclude: /(node_modules)/,
                // определяем загрузчик
                loader: "babel-loader"
            }
        ]
    },

    //Парамтеры dev сервера
    devServer: {

        port: 8081,
        //Выводить ошибки в браузер
        overlay: true,
        //Начальная страница
        openPage: 'build/index.html',
        //SPA route. Возвращать index если файл маршрута не найден
        historyApiFallback: {
            index: 'index.html'
        },

        proxy: {            

            //Адрес WevAPI
            '/api/*': {
                target: 'http://localhost:47780'
            }
        }
    }

}