const { merge } = require('webpack-merge') const process = require('process') const colors = require('colors') const path = require('path') const fs = require('fs') colors.enable() const baseConfigPath = path.resolve(__dirname, 'webpack.config.base.js') const quit = (error = false) => { console.log('Exiting...') process.exit(error ? 1 : 0) } module.exports = (env) => { if (!fs.existsSync(path.resolve(__dirname, 'src/services/api'))) { console.error(`Error: Services not found! Generate it first!`.bold.red) console.info('To generate services you can use node scripts.') console.info('For example: `npm run oug_dev` for generate services from dev-server.') console.error(`Ошибка: Сервисы не найдены! Сначала сгенерируйте их!`.bold.red) console.info('Для генерации сервисов воспользуйтесь node-скриптами.') console.info('Например: `npm run oug_dev` для генерации от dev-сервера.') quit(1) } if (!fs.existsSync(baseConfigPath)) { console.error(`Error: Base webpack config file not found!`.bold.red) console.error(`Ошибка: базовый конфигурационный файл webpack не найден!`.bold.red) quit(1) } const mode = String(env.ENV) const configPath = path.resolve(__dirname, `webpack.config.${env.ENV}.js`) if (!fs.existsSync(configPath)) { console.error(`Error: Webpack config file for mode "${mode.underline}" not found!`.bold.red) console.error(`Ошибка: конфигурационный файл webpack для режима "${mode.underline}" не найден!`.bold.red) quit(1) } console.info('Make sure you update your npm packages and services!'.bold.yellow) console.info('Убедитесь, что вы обновили npm-пакеты и сервисы!'.bold.yellow) console.info(`Building in mode: ${String(env.ENV).blue.bold}`) console.info(`Using base config: ${baseConfigPath.underline.italic}`) console.info(`Using main config: ${configPath.underline.italic}`) console.info(`Собрка в режиме: ${String(env.ENV).blue.bold}`) console.info(`Базовый конфигурационный файл: ${baseConfigPath.underline.italic}`) console.info(`Режимный конфигурационный файл: ${configPath.underline.italic}`) return merge(require(baseConfigPath), require(configPath)) }