mirror of
				https://github.com/Telecominfraproject/wlan-cloud-ui.git
				synced 2025-11-03 20:28:12 +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',
 | 
						|
};
 |