mirror of
				https://github.com/Telecominfraproject/wlan-cloud-ui.git
				synced 2025-10-31 10:48:01 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const MiniCssExtractPlugin = require('mini-css-extract-plugin');
 | |
| const { CleanWebpackPlugin } = require('clean-webpack-plugin');
 | |
| const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
 | |
| const TerserPlugin = require('terser-webpack-plugin');
 | |
| const path = require('path');
 | |
| 
 | |
| const commonPaths = require('./paths');
 | |
| 
 | |
| module.exports = {
 | |
|   output: {
 | |
|     filename: `${commonPaths.jsFolder}/[name].[hash].js`,
 | |
|     path: commonPaths.outputPath,
 | |
|     publicPath: '/',
 | |
|     chunkFilename: `${commonPaths.jsFolder}/[name].[chunkhash].js`,
 | |
|   },
 | |
|   optimization: {
 | |
|     minimizer: [
 | |
|       new TerserPlugin({
 | |
|         // Use multi-process parallel running to improve the build speed
 | |
|         // Default number of concurrent runs: os.cpus().length - 1
 | |
|         parallel: true,
 | |
|         // Enable file caching
 | |
|         cache: true,
 | |
|         sourceMap: true,
 | |
|       }),
 | |
|       new OptimizeCSSAssetsPlugin(),
 | |
|     ],
 | |
|     // Automatically split vendor and commons
 | |
|     // https://twitter.com/wSokra/status/969633336732905474
 | |
|     // https://medium.com/webpack/webpack-4-code-splitting-chunk-graph-and-the-splitchunks-optimization-be739a861366
 | |
|     splitChunks: {
 | |
|       cacheGroups: {
 | |
|         vendors: {
 | |
|           test: /[\\/]node_modules[\\/]/,
 | |
|           name: 'vendors',
 | |
|           chunks: 'initial',
 | |
|         },
 | |
|         async: {
 | |
|           test: /[\\/]node_modules[\\/]/,
 | |
|           name: 'async',
 | |
|           chunks: 'async',
 | |
|           minChunks: 4,
 | |
|         },
 | |
|       },
 | |
|     },
 | |
|     // Keep the runtime chunk seperated to enable long term caching
 | |
|     // https://twitter.com/wSokra/status/969679223278505985
 | |
|     runtimeChunk: true,
 | |
|   },
 | |
| 
 | |
|   module: {
 | |
|     rules: [
 | |
|       {
 | |
|         test: /\.(css|scss)$/,
 | |
|         use: [
 | |
|           MiniCssExtractPlugin.loader,
 | |
|           {
 | |
|             loader: 'css-loader',
 | |
|             options: {
 | |
|               sourceMap: false,
 | |
|               localsConvention: 'camelCase',
 | |
|               modules: {
 | |
|                 localIdentName: '[local]___[hash:base64:5]',
 | |
|               },
 | |
|             },
 | |
|           },
 | |
|           'sass-loader',
 | |
|         ],
 | |
|       },
 | |
|     ],
 | |
|   },
 | |
|   resolve: {
 | |
|     modules: ['node_modules', 'app'],
 | |
|     alias: {
 | |
|       app: path.resolve(__dirname, '../', 'app'),
 | |
|     },
 | |
|   },
 | |
|   plugins: [
 | |
|     new CleanWebpackPlugin(),
 | |
|     new MiniCssExtractPlugin({
 | |
|       filename: `${commonPaths.cssFolder}/[name].css`,
 | |
|       chunkFilename: `${commonPaths.cssFolder}/[name].css`,
 | |
|     }),
 | |
|   ],
 | |
|   devtool: 'source-map',
 | |
| };
 | 
