const path = require('path')
const isProdMode = Object.is(process.env.NODE_ENV, 'production')
const baseUrl = process.env.BASE_URL || (isProdMode ? 'https://sso.ubtob.com/' : 'https://test-sso-server.uuzcc.cn/')

module.exports = {
  router: {
    middleware: 'check-auth'
  },
  transition: {
    name: 'fade',
    mode: 'out-in'
  },
  /*
  ** Headers of the page
  */
  head: {
    title: '账户中心',
    meta: [
      { charset: 'utf-8' },
      { 'http-equiv': 'X-UA-Compatible', content: 'IE=edge,chrome=1' },
      { name: 'render', content: 'webkit' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      { hid: 'description', name: 'description', content: '账户中心' }
    ],
    link: [
      { rel: 'icon', type: 'image/x-icon', href: '/U.png' }
    ]
  },
  /*
  ** Customize the progress-bar color
  */
  loading: '~components/common/nuxt-loading/Loading.vue',
  /*
  ** Build configuration
  */
  build: {
    /*
    ** Run ESLINT on save
    */
    extractCSS: { allChunks: true },
    extend (config, { dev, isClient, isServer }) {
      config.resolve.alias['~utils'] = path.join(__dirname, 'utils')
      config.resolve.alias['~components'] = path.join(__dirname, 'components')
      config.resolve.alias['~assets'] = path.join(__dirname, 'assets')
      config.resolve.alias['~plugins'] = path.join(__dirname, 'plugins')
      config.resolve.alias['~store'] = path.join(__dirname, 'store')
     ** Run ESLINT on save
     */
    extractCSS: {
      allChunks: true
    },
    extend(config, {
      dev,
      isClient,
      isServer
    }) {
      Object.assign(config.resolve.alias, {
        '~utils': path.resolve(__dirname, 'utils'),
        '~components': path.join(__dirname, 'components'),
        '~assets': path.join(__dirname, 'assets'),
        '~plugins': path.join(__dirname, 'plugins'),
        '~store': path.join(__dirname, 'store')
      })

      // nuxt ^2.00 版本后，webpack HtmlWebpackPlguin插件打包 会存在htlm5不能转换的问题
      // 已经命令是将 该插件 压缩部分进行重新处理
      for (let i = 0; i < config.plugins.length; i++) {
        if (config.plugins[i] && config.plugins[i].options && config.plugins[i].options.minify) {
          config.plugins[i].options.minify = {
            removeAttributeQuotes: true,
            collapseWhitespace: true,
            html5: true,
            minifyCSS: true,
            removeComments: true,
            removeEmptyAttributes: true,
          }
        }
      }
      // config.resolve.alias['~utils'] = path.join(__dirname, 'utils')
      // config.resolve.alias['~components'] = path.join(__dirname, 'components')
      // config.resolve.alias['assets'] = path.join(__dirname, './assets')
      // config.resolve.alias['~plugins'] = path.join(__dirname, 'plugins')
      // config.resolve.alias['~store'] = path.join(__dirname, 'store')
      // config.module.rules.push({
      //   test: /\.scss$/,
      //   loader: 'vue-style-loader!css-loader!sass-loader'
      // })
      // config.module.rules.push({
      //   test: /\.js$/,
      //   loader: 'babel-loader'
      // })
      // if (isClient) {
      //   config.module.rules.push({
      //     enforce: 'pre',
      //     test: /\.(js|vue)$/,
      //     loader: "eslint-loader",
      //     exclude: /node_modules/
      //   })
      // }
    },
    vendor: [
      'axios',
      'element-ui',
      'mint-ui',
      'vuerify',
      'vee-validate'
    ],
    babel: {
      presets: ['@nuxt/babel-preset-app']
    }
    // postcss: [
    //   require('autoprefixer')({
    //     browsers: ['last 3 versions']
    //   })
    // ]
  },
  css: [{
      src: '~assets/scss/mobileCommon.scss',
      lang: 'scss'
    },
    {
      src: '~assets/scss/app.scss',
      lang: 'scss'
    }
  ],
  dev: !isProdMode,
  env: {
    baseUrl,
  },
  plugins: [
    // {
    //   src: '~plugins/axios-nuxt.js'
    // },
    //   {
    //   src: '~plugins/axios.js'
    // },
    {
      src: '~plugins/element-ui.js'
    }, {
      src: '~plugins/mint-ui.js'
    }, {
      src: '~plugins/filters.js',
      ssr: false
    }, {
      src: '~plugins/jsonp.js',
      ssr: false
    }, {
      src: '~plugins/vuerify.js',
      ssr: false
    }, {
      src: '~plugins/vee-validate.js',
      ssr: true
    }
  ],
  /* TODO 代理 */
  proxyTable: ['/api/**', '/login/**', '/user**', '/logout**', '/sso/**', '/appeal/**', '/update/user/**', '/valid/**', '/im/**', '/weChat/**', '/bh/**', '/foreign/**']
}
