const path = require('path')

let targetUrl = 'https://test.m.kj.colexiu.com'
// let targetUrl = 'http://192.168.3.28:8000/'
// let targetUrl = 'http://192.168.3.139:8000' // 箭河
// let targetUrl = 'http://192.168.3.48:8000'
// let version = '1.0.0'
// webpack.prod.conf.js
// const Version = new Date().getTime();
// const Version = 20191227;
const CompressionWebpackPlugin = require('compression-webpack-plugin')
const productionGzipExtensions = ['js', 'css']

function resolve (dir) {
  return path.join(__dirname, './', dir)
}
module.exports = {
  publicPath: './',
  // outputDir: 'dist',
  // assetsDir: 'static',
  // outputDir: 'dist',
  // 调整内部的 webpack 配置。
  // 查阅 https://github.com/vuejs/vue-doc-zh-cn/vue-cli/webpack.md
  // chainWebpack: () => {},
  // transpileDependencies: ['webpack-dev-server/client'],
  chainWebpack: config => {
    config.devtool('inline-source-map')
    config.output.filename('[name].[hash].js').end();

    // const svgRule = config.module.rule('svg')
    // // 清除已有的所有 loader,如果你不这样做，接下来的 loader 会附加在该规则现有的 loader 之后。
    // svgRule.uses.clear()
    // // 添加要替换的 loader
    // svgRule.use('svg-sprite-loader').loader('svg-sprite-loader')
    // .options({
    //     symbolId: 'icon-[name]'
    // })
    // svg rule loader
    const svgRule = config.module.rule('svg') // 找到svg-loader
    svgRule.uses.clear() // 清除已有的loader, 如果不这样做会添加在此loader之后
    svgRule.exclude.add(/node_modules/) // 正则匹配排除node_modules目录
    svgRule // 添加svg新的loader处理
      .test(/\.svg$/)
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })

    // 修改images loader 添加svg处理
    const imagesRule = config.module.rule('images')
    imagesRule.exclude.add(resolve('src/icons'))
    config.module
      .rule('images')
      .test(/\.(png|jpe?g|gif|svg)(\?.*)?$/)


    config.plugin('html').tap(args => {
      args[0].minify = {
        removeAttributeQuotes: false
      }
      return args
    })
  },
  // eslint-loader 是否在保存的时候检查
  lintOnSave: true,

  // 是否使用包含运行时编译器的Vue核心的构建
  runtimeCompiler: false,
  // 生产环境 sourceMap
  productionSourceMap: false,
  // productionGzip: true,
  configureWebpack: (config) => { 
    // process.env.NODE_ENV === 'production'
    // 生产环境
    config.plugins.push(
      new CompressionWebpackPlugin({
        filename: '[path].gz[query]', // 提示示compression-webpack-plugin@3.0.0的话asset改为filename
        algorithm: 'gzip',
        test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
        threshold: 10240,
        minRatio: 0.8
      })
    )
  },
  // 配置 webpack-dev-server 行为。
  devServer: {
    open: process.platform === 'darwin',
    host: '0.0.0.0',
    port: 9002,
    https: false,
    hotOnly: false,
    // 查阅 https://github.com/vuejs/vue-doc-zh-cn/vue-cli/cli-service.md#配置代理
    proxy: {
      '/api-student': {
        target: targetUrl,
        changeOrigin: true,
        ws: true,
        '^/api-student': '/api-student',
        xfwd: true
      },
      '/api-auth': {
        target: targetUrl,
        changeOrigin: true,
        ws: true,
        '^/api-auth': '/api-auth',
        xfwd: true
      }
    }, // string | Object
  },
  css: {
    loaderOptions: {
      less: {
        modifyVars: {
          // red: '#03a9f4',
          blue: '#14928A',
          // orange: '#f08d49',
          // 'text-color': '#111'
        }
      }
    }
  },
}