1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
  | 'use strict' 
 |  const path = require('path') 
 |  const utils = require('./utils') 
 |  const config = require('../config') 
 |  const vueLoaderConfig = require('./vue-loader.conf') 
 |    
 |  function resolve (dir) { 
 |    return path.join(__dirname, '..', dir) 
 |  } 
 |    
 |    
 |    
 |  module.exports = { 
 |    context: path.resolve(__dirname, '../'), 
 |    entry: { 
 |      app: './src/main.js' 
 |    }, 
 |    output: { 
 |      path: config.build.assetsRoot, 
 |      filename: '[name].js', 
 |      publicPath: process.env.NODE_ENV === 'production' 
 |        ? config.build.assetsPublicPath 
 |        : config.dev.assetsPublicPath 
 |    }, 
 |    resolve: { 
 |      extensions: ['.js', '.vue', '.json'], 
 |      alias: { 
 |        'vue$': 'vue/dist/vue.esm.js', 
 |        '@': resolve('src'), 
 |        '@static': resolve('static'), 
 |      } 
 |    }, 
 |    module: { 
 |      rules: [ 
 |        { 
 |          test: /\.vue$/, 
 |          loader: 'vue-loader', 
 |          options: vueLoaderConfig 
 |        }, 
 |        { 
 |          test: /\.js$/, 
 |          loader: 'babel-loader', 
 |          include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')] 
 |        }, 
 |        { 
 |          test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 
 |          loader: 'url-loader', 
 |          options: { 
 |            limit: 10000, 
 |            name: utils.assetsPath('img/[name].[hash:7].[ext]') 
 |          } 
 |        }, 
 |        { 
 |          test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, 
 |          loader: 'url-loader', 
 |          options: { 
 |            limit: 10000, 
 |            name: utils.assetsPath('media/[name].[hash:7].[ext]') 
 |          } 
 |        }, 
 |        { 
 |          test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 
 |          loader: 'url-loader', 
 |          options: { 
 |            limit: 10000, 
 |            name: utils.assetsPath('fonts/[name].[hash:7].[ext]') 
 |          } 
 |        } 
 |      ] 
 |    }, 
 |    node: { 
 |      // prevent webpack from injecting useless setImmediate polyfill because Vue 
 |      // source contains it (although only uses it if it's native). 
 |      setImmediate: false, 
 |      // prevent webpack from injecting mocks to Node native modules 
 |      // that does not make sense for the client 
 |      dgram: 'empty', 
 |      fs: 'empty', 
 |      net: 'empty', 
 |      tls: 'empty', 
 |      child_process: 'empty' 
 |    } 
 |  } 
 |  
  |