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