Rev 3577 | AutorÃa | Ultima modificación | Ver Log |
const path = require('path');
const isDevelopment = process.env.NODE_ENV === 'development';
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const TerserPlugin = require('terser-webpack-plugin');
// const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
// change active path here
const currentPath = {
entry: './app/index.jsx',
output: path.join(__dirname, 'public/bundles'),
filename: 'applicationBundle.js'
};
module.exports = {
entry: currentPath.entry,
output: {
path: currentPath.output,
filename: currentPath.filename
},
watch: false,
mode: 'production',
resolve: {
alias: {
ckeditor5: path.resolve(__dirname, 'node_modules/ckeditor5/dist/ckeditor5.js'),
'ckeditor5.css': path.resolve(__dirname, 'node_modules/ckeditor5/dist/ckeditor5.css'),
'@components': path.resolve(__dirname, 'app/components/'),
'@constants': path.resolve(__dirname, 'app/constants/'),
'@hocs': path.resolve(__dirname, 'app/hocs/index.js'),
'@hooks': path.resolve(__dirname, 'app/hooks/index.js'),
'@layouts': path.resolve(__dirname, 'app/layouts/'),
'@pages': path.resolve(__dirname, 'app/pages/'),
'@providers': path.resolve(__dirname, 'app/providers/'),
'@store': path.resolve(__dirname, 'app/redux/'),
'@styles': path.resolve(__dirname, 'app/styles/'),
'@services': path.resolve(__dirname, 'app/services/'),
'@utils': path.resolve(__dirname, 'app/utils/'),
'@shared': path.resolve(__dirname, 'app/modules/shared/'),
'@api': path.resolve(__dirname, 'app/modules/shared/libs/axios.js'),
'@microlearning': path.resolve(__dirname, 'app/modules/microlearning/'),
'@knowledges': path.resolve(__dirname, 'app/modules/knowledges/'),
'@marketplace': path.resolve(__dirname, 'app/modules/marketplace/'),
'@inmail': path.resolve(__dirname, 'app/modules/inmail/'),
'@app': path.resolve(__dirname, 'app/'),
store: path.resolve(__dirname, 'app/redux/'),
components: path.resolve(__dirname, 'app/components/'),
utils: path.resolve(__dirname, 'app/utils/')
},
extensions: ['.js', '.jsx', '.scss', '.css']
},
module: {
rules: [
{
test: /(js|jsx)$/,
use: ['babel-loader'],
exclude: /node_modules/
},
{
test: /\.css$/i,
use: [MiniCssExtractPlugin.loader, 'css-loader']
},
{
test: /\.module\.s(a|c)ss$/,
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
modules: {
localIdentName: '[local]--[hash:base64:5]'
},
sourceMap: isDevelopment
}
}
]
},
{
test: /\.s(a|c)ss$/,
exclude: /\.module.(s(a|c)ss)$/,
use: [MiniCssExtractPlugin.loader, 'css-loader']
}
]
},
plugins: [
new MiniCssExtractPlugin({
filename: '[name].css',
chunkFilename: '[id].css'
})
],
optimization: {
minimizer: [
new TerserPlugin({
extractComments: false
})
]
}
};