const path = require('path')
function resolve(dir) {
  return path.join(__dirname, dir)
}

module.exports = {
  publicPath: './',
  outputDir: process.env.VUE_APP_outputDir || 'dist',
  assetsDir: 'static',
  filenameHashing: true,
  lintOnSave: false,
  runtimeCompiler: false,
  transpileDependencies: [],
  productionSourceMap: false,
  css: {
    // 是否使用css分离插件 ExtractTextPlugin
    extract: process.env.NODE_ENV === 'production' ? true : false,
    sourceMap: false,
    // requireModuleExtension: true,
    loaderOptions: {
      sass: {
        prependData: `@import "@/assets/css/variable.scss";`
      }
    }
  },

  chainWebpack: config => {
    config.plugin('html').tap(args => {
      args[0].title = '哈尔滨市八区体育中心第九届亚冬会比赛场馆及配套设施提升改造工程'
      return args
    })

    // 配置别名
    config.resolve.alias.set('@', resolve('src')).set('assets', resolve('src/assets')).set('components', resolve('src/components')).set('views', resolve('src/views')).set('api', resolve('src/api'))

    if (process.env.NODE_ENV === 'production') {
      // 删除系统默认的splitChunk
      config.optimization.delete('splitChunks')
    }
  },
  configureWebpack: config => {
    // 给输出的js名称添加hash
    config.output.filename = 'static/js/[name].[hash].js'
    config.output.chunkFilename = 'static/js/[name].[hash].js'
    config.optimization = {
      splitChunks: {
        cacheGroups: {
          // 抽离所有入口的公用资源为一个chunk
          common: {
            name: 'chunk-common',
            chunks: 'initial',
            minChunks: 2,
            maxInitialRequests: 5,
            minSize: 0,
            priority: 1,
            reuseExistingChunk: true,
            enforce: true
          },
          datav: {
            name: 'chunk-datav',
            test: /[\\/]node_modules[\\/]@jiaminghi[\\/]data-view[\\/]/,
            chunks: 'all',
            priority: 4,
            reuseExistingChunk: true,
            enforce: true
          }
        }
      }
    }
  },

  // 是否为 Babel 或 TypeScript 使用 thread-loader。该选项在系统的 CPU 有多于一个内核时自动启用，仅作用于生产构建。
  parallel: require('os').cpus().length > 1,

  devServer: {
    proxy: {
      '/x_program_center': {
        target: 'http://www.harbinxiaoshi.cn:8000',
        pathRewrite: {
          '^/x_program_center': ''
        }
      }
    }
  }
}
