2019-11-13 17:52:13 +03:00
const path = require ( 'path' ) ;
const TerserPlugin = require ( 'terser-webpack-plugin' ) ;
2020-01-14 21:02:08 +03:00
const { SourceMapDevToolPlugin } = require ( 'webpack' ) ;
2019-11-13 17:52:13 +03:00
module . exports = {
mode : 'production' ,
entry : {
2020-01-14 21:02:08 +03:00
index : [ './web_src/js/index' ] ,
swagger : [ './web_src/js/swagger' ] ,
2019-11-13 17:52:13 +03:00
} ,
2020-01-14 21:02:08 +03:00
devtool : false ,
2019-11-13 17:52:13 +03:00
output : {
path : path . resolve ( _ _dirname , 'public/js' ) ,
2020-01-14 21:02:08 +03:00
filename : '[name].js' ,
2019-11-18 00:39:06 +03:00
chunkFilename : '[name].js' ,
2019-11-13 17:52:13 +03:00
} ,
optimization : {
minimize : true ,
2019-11-15 00:39:51 +03:00
minimizer : [ new TerserPlugin ( {
sourceMap : true ,
2019-11-18 00:39:06 +03:00
extractComments : false ,
terserOptions : {
output : {
comments : false ,
} ,
} ,
2019-11-15 00:39:51 +03:00
} ) ] ,
2019-11-13 17:52:13 +03:00
} ,
2019-11-15 00:39:51 +03:00
module : {
rules : [
{
test : /\.js$/ ,
exclude : /node_modules/ ,
use : {
loader : 'babel-loader' ,
options : {
presets : [
[
'@babel/preset-env' ,
{
2020-01-12 23:53:12 +03:00
useBuiltIns : 'usage' ,
2019-11-15 00:39:51 +03:00
corejs : 3 ,
}
]
2019-11-18 00:39:06 +03:00
] ,
plugins : [
[
'@babel/plugin-transform-runtime' ,
{
regenerator : true ,
}
]
] ,
2019-11-15 00:39:51 +03:00
}
}
2019-11-18 00:39:06 +03:00
} ,
{
test : /\.css$/i ,
use : [ 'style-loader' , 'css-loader' ] ,
} ,
2019-11-15 00:39:51 +03:00
]
2020-01-14 21:02:08 +03:00
} ,
plugins : [
new SourceMapDevToolPlugin ( {
filename : '[name].js.map' ,
exclude : [
'swagger.js' ,
] ,
} ) ,
] ,
performance : {
assetFilter : ( filename ) => {
return ! filename . endsWith ( '.map' ) && filename !== 'swagger.js' ;
}
} ,
2019-11-13 17:52:13 +03:00
} ;