66 lines
1.3 KiB
JavaScript
66 lines
1.3 KiB
JavaScript
const path = require('path');
|
|
const webpack = require('webpack');
|
|
const config = require('./src/config.json');
|
|
|
|
const TerserPlugin = require('terser-webpack-plugin');
|
|
|
|
const webpackConfig = {
|
|
mode: 'development',
|
|
entry: './src/main.ts',
|
|
plugins: [new webpack.ProgressPlugin()],
|
|
|
|
module: {
|
|
rules: [{
|
|
test: /\.(ts|tsx)$/,
|
|
loader: 'ts-loader',
|
|
include: [path.resolve(__dirname, 'src')],
|
|
exclude: [/node_modules/]
|
|
}, {
|
|
test: /.css$/,
|
|
|
|
use: [{
|
|
loader: "style-loader"
|
|
}, {
|
|
loader: "css-loader",
|
|
options: {
|
|
sourceMap: true
|
|
}
|
|
}]
|
|
}]
|
|
},
|
|
|
|
resolve: {
|
|
extensions: ['.tsx', '.ts', '.js']
|
|
},
|
|
|
|
devServer: {
|
|
contentBase: path.join(__dirname, "dist/"),
|
|
contentBasePublicPath: "/",
|
|
port: 3000,
|
|
publicPath: "http://localhost:3000/",
|
|
hotOnly: true
|
|
},
|
|
};
|
|
|
|
if (!config.development) {
|
|
webpackConfig.optimization = {
|
|
minimizer: [new TerserPlugin()],
|
|
|
|
splitChunks: {
|
|
cacheGroups: {
|
|
vendors: {
|
|
priority: -10,
|
|
test: /[\\/]node_modules[\\/]/
|
|
}
|
|
},
|
|
|
|
chunks: 'async',
|
|
minChunks: 1,
|
|
minSize: 30000,
|
|
name: false
|
|
}
|
|
};
|
|
webpackConfig.mode = 'production';
|
|
}
|
|
|
|
module.exports = {...webpackConfig}; |