2025-11-19 09:59:39 +03:00
|
|
|
|
/**
|
|
|
|
|
|
* Конфигурация Babel loader для webpack
|
2025-11-19 10:10:16 +03:00
|
|
|
|
*
|
2025-11-19 09:59:39 +03:00
|
|
|
|
* Обрабатывает файлы JavaScript, JSX и TSX с помощью Babel.
|
|
|
|
|
|
* В режиме разработки включает React Refresh для горячей перезагрузки компонентов.
|
2025-11-19 10:10:16 +03:00
|
|
|
|
*
|
2025-11-19 09:59:39 +03:00
|
|
|
|
* @param {boolean} isDev - Флаг режима разработки
|
|
|
|
|
|
* @returns {Object} Конфигурация babel-loader
|
2025-11-19 10:10:16 +03:00
|
|
|
|
*
|
2025-11-19 09:59:39 +03:00
|
|
|
|
* @example
|
|
|
|
|
|
* const babelLoader = buildBabelLoader(true)
|
|
|
|
|
|
* // Возвращает loader с React Refresh для разработки
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function buildBabelLoader(isDev: boolean) {
|
|
|
|
|
|
const babelLoader = {
|
|
|
|
|
|
test: /\.(js|jsx|tsx)$/,
|
|
|
|
|
|
exclude: /node_modules/,
|
|
|
|
|
|
use: {
|
|
|
|
|
|
loader: 'babel-loader',
|
|
|
|
|
|
options: {
|
|
|
|
|
|
presets: ['@babel/preset-env'],
|
|
|
|
|
|
plugins: [isDev && require.resolve('react-refresh/babel')].filter(
|
|
|
|
|
|
Boolean
|
|
|
|
|
|
),
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return babelLoader
|
|
|
|
|
|
}
|