Blame view

vue.config.js 4.07 KB
80a28914e   吉鹏   init
1
2
3
4
5
6
7
  'use strict'
  const path = require('path')
  const defaultSettings = require('./src/settings.js')
  
  function resolve(dir) {
    return path.join(__dirname, dir)
  }
d7d9c38c2   Adam   auto commit the c...
8
  const name = defaultSettings.title || 'vue Element Admin' // page title
80a28914e   吉鹏   init
9
10
11
12
  
  // If your port is set to 80,
  // use administrator privileges to execute the command line.
  // For example, Mac: sudo npm run
d7d9c38c2   Adam   auto commit the c...
13
14
15
  // You can change the port by the following method:
  // port = 9527 npm run dev OR npm run dev --port = 9527
  const port = process.env.port || process.env.npm_config_port || 9527 // dev port
80a28914e   吉鹏   init
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
  
  // All configuration item explanations can be find in https://cli.vuejs.org/config/
  module.exports = {
    /**
     * You will need to set publicPath if you plan to deploy your site under a sub path,
     * for example GitHub Pages. If you plan to deploy your site to https://foo.github.io/bar/,
     * then publicPath should be set to "/bar/".
     * In most cases please use '/' !!!
     * Detail: https://cli.vuejs.org/config/#publicpath
     */
    publicPath: '/',
    outputDir: 'dist',
    assetsDir: 'static',
    lintOnSave: process.env.NODE_ENV === 'development',
    productionSourceMap: false,
    devServer: {
      port: port,
      open: true,
27067a70d   吉鹏   外网开放
34
35
      public: require('os').networkInterfaces()[Object.keys(require('os').networkInterfaces())[0]][1].address + ':8080',
      disableHostCheck: true,
80a28914e   吉鹏   init
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
      overlay: {
        warnings: false,
        errors: true
      },
      before: require('./mock/mock-server.js')
    },
    configureWebpack: {
      // provide the app's title in webpack's name field, so that
      // it can be accessed in index.html to inject the correct title.
      name: name,
      resolve: {
        alias: {
          '@': resolve('src')
        }
      }
    },
a6e433928   Adam   auto commit the c...
52
    chainWebpack(config) {//链式打包
80a28914e   吉鹏   init
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
84
      config.plugins.delete('preload') // TODO: need test
      config.plugins.delete('prefetch') // TODO: need test
  
      // set svg-sprite-loader
      config.module
        .rule('svg')
        .exclude.add(resolve('src/icons'))
        .end()
      config.module
        .rule('icons')
        .test(/\.svg$/)
        .include.add(resolve('src/icons'))
        .end()
        .use('svg-sprite-loader')
        .loader('svg-sprite-loader')
        .options({
          symbolId: 'icon-[name]'
        })
        .end()
  
      // set preserveWhitespace
      config.module
        .rule('vue')
        .use('vue-loader')
        .loader('vue-loader')
        .tap(options => {
          options.compilerOptions.preserveWhitespace = true
          return options
        })
        .end()
  
      config
60fa0be9d   Adam   auto commit the c...
85
        // https://webpack.js.org/configuration/devtool/#development
80a28914e   吉鹏   init
86
87
88
89
90
91
92
93
94
95
96
        .when(process.env.NODE_ENV === 'development',
          config => config.devtool('cheap-source-map')
        )
  
      config
        .when(process.env.NODE_ENV !== 'development',
          config => {
            config
              .plugin('ScriptExtHtmlWebpackPlugin')
              .after('html')
              .use('script-ext-html-webpack-plugin', [{
d7d9c38c2   Adam   auto commit the c...
97
              // `runtime` must same as runtimeChunk name. default is `runtime`
80a28914e   吉鹏   init
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
                inline: /runtime\..*\.js$/
              }])
              .end()
            config
              .optimization.splitChunks({
                chunks: 'all',
                cacheGroups: {
                  libs: {
                    name: 'chunk-libs',
                    test: /[\\/]node_modules[\\/]/,
                    priority: 10,
                    chunks: 'initial' // only package third parties that are initially dependent
                  },
                  elementUI: {
                    name: 'chunk-elementUI', // split elementUI into a single package
                    priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
                    test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
                  },
                  commons: {
                    name: 'chunk-commons',
                    test: resolve('src/components'), // can customize your rules
                    minChunks: 3, //  minimum common number
                    priority: 5,
                    reuseExistingChunk: true
                  }
                }
              })
            config.optimization.runtimeChunk('single')
          }
        )
    }
  }