mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	- reduce verbosity during build - use array form `use` to allow easier extension - disable uninteresting source maps - disable symlink resolution for a speedup Co-authored-by: zeripath <art27@cantab.net> Co-authored-by: techknowlogick <matti@mdranta.net>
		
			
				
	
	
		
			95 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const path = require('path');
 | 
						|
const TerserPlugin = require('terser-webpack-plugin');
 | 
						|
const { SourceMapDevToolPlugin } = require('webpack');
 | 
						|
const VueLoaderPlugin = require('vue-loader/lib/plugin');
 | 
						|
 | 
						|
module.exports = {
 | 
						|
  mode: 'production',
 | 
						|
  entry: {
 | 
						|
    index: ['./web_src/js/index'],
 | 
						|
    swagger: ['./web_src/js/swagger'],
 | 
						|
    jquery: ['./web_src/js/jquery'],
 | 
						|
  },
 | 
						|
  devtool: false,
 | 
						|
  output: {
 | 
						|
    path: path.resolve(__dirname, 'public/js'),
 | 
						|
    filename: '[name].js',
 | 
						|
    chunkFilename: '[name].js',
 | 
						|
  },
 | 
						|
  optimization: {
 | 
						|
    minimize: true,
 | 
						|
    minimizer: [new TerserPlugin({
 | 
						|
      sourceMap: true,
 | 
						|
      extractComments: false,
 | 
						|
      terserOptions: {
 | 
						|
        output: {
 | 
						|
          comments: false,
 | 
						|
        },
 | 
						|
      },
 | 
						|
    })],
 | 
						|
  },
 | 
						|
  module: {
 | 
						|
    rules: [
 | 
						|
      {
 | 
						|
        test: /\.vue$/,
 | 
						|
        exclude: /node_modules/,
 | 
						|
        loader: 'vue-loader'
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.js$/,
 | 
						|
        exclude: /node_modules/,
 | 
						|
        use: [
 | 
						|
          {
 | 
						|
            loader: 'babel-loader',
 | 
						|
            options: {
 | 
						|
              presets: [
 | 
						|
                [
 | 
						|
                  '@babel/preset-env',
 | 
						|
                  {
 | 
						|
                    useBuiltIns: 'usage',
 | 
						|
                    corejs: 3,
 | 
						|
                  }
 | 
						|
                ]
 | 
						|
              ],
 | 
						|
              plugins: [
 | 
						|
                [
 | 
						|
                  '@babel/plugin-transform-runtime',
 | 
						|
                  {
 | 
						|
                    regenerator: true,
 | 
						|
                  }
 | 
						|
                ],
 | 
						|
                '@babel/plugin-proposal-object-rest-spread',
 | 
						|
              ],
 | 
						|
            }
 | 
						|
          },
 | 
						|
        ],
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.css$/i,
 | 
						|
        use: ['style-loader', 'css-loader'],
 | 
						|
      },
 | 
						|
    ]
 | 
						|
  },
 | 
						|
  plugins: [
 | 
						|
    new VueLoaderPlugin(),
 | 
						|
    new SourceMapDevToolPlugin({
 | 
						|
      filename: '[name].js.map',
 | 
						|
      exclude: [
 | 
						|
        'gitgraph.js',
 | 
						|
        'jquery.js',
 | 
						|
        'swagger.js',
 | 
						|
      ],
 | 
						|
    }),
 | 
						|
  ],
 | 
						|
  performance: {
 | 
						|
    maxEntrypointSize: 512000,
 | 
						|
    maxAssetSize: 512000,
 | 
						|
    assetFilter: (filename) => {
 | 
						|
      return !filename.endsWith('.map') && filename !== 'swagger.js';
 | 
						|
    }
 | 
						|
  },
 | 
						|
  resolve: {
 | 
						|
    symlinks: false,
 | 
						|
  }
 | 
						|
};
 |