103 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
const path = require('path')
 | 
						|
const VueLoaderPlugin = require('vue-loader/lib/plugin')
 | 
						|
const HTMLPlugin = require('html-webpack-plugin')
 | 
						|
 | 
						|
const vueLoaderConfig = require('../vue-loader.config')
 | 
						|
 | 
						|
 | 
						|
module.exports = {
 | 
						|
  target: 'electron-renderer',
 | 
						|
  entry: {
 | 
						|
    renderer: path.join(__dirname, '../../src/renderer/main.js'),
 | 
						|
  },
 | 
						|
  output: {
 | 
						|
    filename: '[name].js',
 | 
						|
    libraryTarget: 'commonjs2',
 | 
						|
    path: path.join(__dirname, '../../dist/electron'),
 | 
						|
    publicPath: './',
 | 
						|
  },
 | 
						|
  resolve: {
 | 
						|
    alias: {
 | 
						|
      '@': path.join(__dirname, '../../src/renderer'),
 | 
						|
      common: path.join(__dirname, '../../src/common'),
 | 
						|
    },
 | 
						|
    extensions: ['*', '.js', '.json', '.vue', '.node'],
 | 
						|
  },
 | 
						|
  module: {
 | 
						|
    rules: [
 | 
						|
      {
 | 
						|
        test: /\.(vue|js)$/,
 | 
						|
        use: {
 | 
						|
          loader: 'eslint-loader',
 | 
						|
          options: {
 | 
						|
            formatter: require('eslint-formatter-friendly'),
 | 
						|
          },
 | 
						|
        },
 | 
						|
        exclude: /node_modules/,
 | 
						|
        enforce: 'pre',
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.vue$/,
 | 
						|
        loader: 'vue-loader',
 | 
						|
        options: vueLoaderConfig,
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.js$/,
 | 
						|
        loader: 'babel-loader',
 | 
						|
        exclude: /node_modules/,
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.pug$/,
 | 
						|
        oneOf: [
 | 
						|
          // Use pug-plain-loader handle .vue file
 | 
						|
          {
 | 
						|
            resourceQuery: /vue/,
 | 
						|
            use: ['pug-plain-loader'],
 | 
						|
          },
 | 
						|
          // Use pug-loader handle .pug file
 | 
						|
          {
 | 
						|
            use: ['pug-loader'],
 | 
						|
          },
 | 
						|
        ],
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
 | 
						|
        loader: 'url-loader',
 | 
						|
        options: {
 | 
						|
          limit: 10000,
 | 
						|
          name: 'imgs/[name]--[folder].[ext]',
 | 
						|
        },
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
 | 
						|
        loader: 'url-loader',
 | 
						|
        options: {
 | 
						|
          limit: 10000,
 | 
						|
          name: 'media/[name]--[folder].[ext]',
 | 
						|
        },
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
 | 
						|
        loader: 'url-loader',
 | 
						|
        options: {
 | 
						|
          limit: 10000,
 | 
						|
          name: 'fonts/[name]--[folder].[ext]',
 | 
						|
        },
 | 
						|
      },
 | 
						|
    ],
 | 
						|
  },
 | 
						|
  performance: {
 | 
						|
    maxEntrypointSize: 300000,
 | 
						|
  },
 | 
						|
  plugins: [
 | 
						|
    new HTMLPlugin({
 | 
						|
      filename: 'index.html',
 | 
						|
      template: path.join(__dirname, '../../src/index.pug'),
 | 
						|
      isProd: process.env.NODE_ENV == 'production',
 | 
						|
      browser: process.browser,
 | 
						|
      __dirname,
 | 
						|
    }),
 | 
						|
    new VueLoaderPlugin(),
 | 
						|
  ],
 | 
						|
}
 |