const {
  defineConfig
} = require('@vue/cli-service')
const path = require('path')

function resolve(dir) {
  return path.join(__dirname, dir)
}
// //生产环境标记
// const IS_PRODUCTION = process.env.NODE_ENV === 'production'
// //配置引用cdn的js、css地址
// const cdn = {
//   css: [
//     'https://unpkg.com/element-ui@2.13.2/lib/theme-chalk/index.css'
//   ],
//   js: [
//     'https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.min.js',
//     'https://cdn.bootcdn.net/ajax/libs/vue-router/3.0.2/vue-router.min.js',
//     'https://cdn.bootcdn.net/ajax/libs/vuex/3.1.0/vuex.min.js',
//     'https://cdn.bootcdn.net/ajax/libs/axios/0.18.1/axios.min.js',
//     'https://unpkg.com/element-ui@2.13.2/lib/index.js',
//     'https://cdn.bootcdn.net/ajax/libs/echarts/5.0.1/echarts.min.js'
//   ]
// }

// //配置打包时使用CDN节点（加入externals外部扩展）， 忽略打包的第三方库
// //左面放package.json中的扩展的名称,右面放项目依赖的名称(项目初始化要用的名称)
// const externals = {
//   // 属性名称 vue, 表示遇到 import xxx from 'vue' 这类引入 'vue'的，不去 node_modules 中找，而是去找全局变量 Vue（其他的为VueRouter、Vuex、axios、ELEMENT、echarts，注意全局变量是一个确定的值，不能修改为其他值，修改为其他大小写或者其他值会报错，若有异议可留言）
//   vue: 'Vue',
//   'vue-router': 'VueRouter',
//   vuex: 'Vuex',
//   axios: 'axios',
//   'element-ui': 'ELEMENT',
//   'echarts': 'echarts'
// }

module.exports = defineConfig({
  publicPath: './',
  outputDir: 'dist',
  assetsDir: 'static',
  transpileDependencies: true,
  lintOnSave: false, //关闭eslint检查
  devServer: {
    host: 'localhost',
    port: '8080',
    open: true,
    hot: true,
    proxy: {
      '/api': {
        // target: 'http://192.168.1.230:9562/api',
        target: 'http://222.85.214.245:9566/api',
        // target:'http://192.168.1.230:9566/api',
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      },
      '/files':{
        // target:'http://192.168.1.230:9563/files',
        target: 'http://222.85.214.245:9563/files',
        changeOrigin: true,
        pathRewrite: {
          '^/files': ''
        }
      }
    }
  },
  // configureWebpack: {
  //   // 采用cdn的方式,所以将以下这些文件配置不打包
  //   externals: {
  //     vue: "vue",
  //     'vue-router': 'VueRouter',
  //     vuex: 'Vuex',
  //     axios: 'axios',
  //     'core-js': 'core-js',
  //   },
  //   resolve: {
  //     alias: {
  //       '@': resolve('src')
  //     }
  //   },
  //   optimization: {
  //     splitChunks: {
  //       cacheGroups: {
  //         vendor: {
  //           //第三方库抽离
  //           chunks: "all",
  //           test: /node_modules/,
  //           name: "vendor",
  //           minChunks: 1, //在分割之前，这个代码块最小应该被引用的次数
  //           maxInitialRequests: 5,
  //           minSize: 0, //大于0个字节
  //           priority: 100 //权重
  //         },
  //         common: {
  //           //公用模块抽离
  //           chunks: "all",
  //           test: /[\\/]src[\\/]utils[\\/]/,
  //           name: "common",
  //           minChunks: 1,
  //           maxInitialRequests: 5,
  //           minSize: 0, //大于0个字节
  //           priority: 60
  //         },
  //         // styles: {
  //         //   //样式抽离
  //         //   name: "styles",
  //         //   test: /\.(sa|sc|c)ss$/,
  //         //   chunks: "all",
  //         //   enforce: true
  //         // },
  //         runtimeChunk: {
  //           name: "manifest"
  //         }
  //       }
  //     }
  //   }
  // },
  chainWebpack: config => {
    config
      .plugin('html')
      .tap(args => {
        args[0].title = '贵州省精品展览展示平台'
        return args
      })

    // svg
    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()
    // cdn
    // if (IS_PRODUCTION) {
    //   config.plugin('html').tap(args => {
    //     args[0].cdn = cdn
    //     return args
    //   })
    //   //视为一个外部库，而不将它打包进来
    //   config.externals(externals)

    //   // 生产模式去除console.log
    //   config.optimization
    //     .minimizer('terser')
    //     .tap(args => {
    //       Object.assign(args[0].terserOptions.compress, {

    //         pure_funcs: ['console.log']
    //       })
    //       return args
    //     })
    // }

  },


})
