Files
divkit/client/web/divkit-examples/divkit-react/webpack.config.js
T
2022-08-26 03:52:29 +03:00

62 lines
1.8 KiB
JavaScript

const path = require('path');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const common = (isServer) => {
return {
target: isServer ? 'node' : 'web',
mode: 'development',
output: {
path: path.resolve(__dirname, 'dist')
},
module: {
rules: [
{
test: /\.css$/i,
use: [
MiniCssExtractPlugin.loader,
'css-loader'
]
},
{
test: /\.tsx?$/,
use: {
loader: require.resolve('babel-loader'),
options: {
presets: [
['@babel/preset-typescript', {
isTSX: true,
allExtensions: true
}],
'@babel/preset-react'
]
}
}
}
]
},
plugins: [
new MiniCssExtractPlugin(),
!isServer && new HtmlWebpackPlugin({
template: path.resolve(__dirname, 'index.html')
}),
new webpack.DefinePlugin({
'process.env.IS_SERVER': JSON.stringify(isServer),
})
].filter(Boolean)
};
};
module.exports = [{
...common(false),
entry: {
client: path.resolve(__dirname, 'src/client.tsx')
}
}, {
...common(true),
entry: {
server: path.resolve(__dirname, 'src/server.tsx')
}
}];