'use strict'
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const path = require('path')
const baseWebpackConfig = require('./webpack.base.conf')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
const portfinder = require('portfinder')

const HOST = process.env.HOST
const PORT = process.env.PORT && Number(process.env.PORT)



// process.env.env_config == 'test' ? require('../config/test.env') : require('../config/prod.env')

// const env = process.env.env_config == 'test' ? require('../config/test.env') : require('../config/prod.env')

  if (process.env.env_config == 'dev') {
    var env = require('../config/dev.env.js')
  } else if (process.env.env_config == 'prod') {
    var env = require('../config/prod.env.js')
  } else if (process.env.env_config == 'test1') {
    var env = require('../config/test1.env.js')
  }else {
    var env = require('../config/test.env.js')
  }
  
console.log(process.env,'process.env')

const devWebpackConfig = merge(baseWebpackConfig, {
  module: {
    rules: utils.styleLoaders({
      sourceMap: config.dev.cssSourceMap,
      usePostCSS: true
    })
  },
  // cheap-module-eval-source-map is faster for development
  devtool: config.dev.devtool,

  // these devServer options should be customized in /config/index.js
  devServer: {
    clientLogLevel: 'warning',
    historyApiFallback: {
      rewrites: [{
        from: /.*/,
        to: path.posix.join(config.dev.assetsPublicPath, 'index.html')
      }, ],
    },
    hot: true,
    contentBase: false, // since we use CopyWebpackPlugin.
    compress: true,
    host: HOST || config.dev.host,
    port: PORT || config.dev.port,
    open: config.dev.autoOpenBrowser,
    overlay: config.dev.errorOverlay ? {
      warnings: false,
      errors: true
    } : false,
    publicPath: config.dev.assetsPublicPath,
    proxy: config.dev.proxyTable,
    quiet: true, // necessary for FriendlyErrorsPlugin
    watchOptions: {
      poll: config.dev.poll,
    }
  },

  plugins: [
    new webpack.DefinePlugin({
      'process.env': env,//process.env.env_config == 'test' ? require('../config/test.env') : require( '../config/dev.env')
    }),
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
    new webpack.NoEmitOnErrorsPlugin(),
    // https://github.com/ampedandwired/html-webpack-plugin
    new HtmlWebpackPlugin({
      filename: 'index.html',
      template: 'index.html',
      inject: true,
       chunks:['app']
    }),
    new HtmlWebpackPlugin({
      filename: 'redirect-mp.html',
      template: 'redirect-mp.html',
      inject: true,
       chunks:['redirect']//不加这一段的话，会将打包之后的pages.js自动引入到index.html中
    }),
    
    new HtmlWebpackPlugin({
      filename: 'redirect-jd.html',
      template: 'redirect-jd.html',
      inject: true,
       chunks:['redirectJd']//不加这一段的话，会将打包之后的pages.js自动引入到index.html中
    }),
		
		new HtmlWebpackPlugin({
		  filename: 'kysDz-jd.html',
		  template: 'kysDz-jd.html',
		  inject: true,
		   chunks:['redirectKysJd']//不加这一段的话，会将打包之后的pages.js自动引入到index.html中
		}),
    
    // copy custom static assets
    new CopyWebpackPlugin([{
      from: path.resolve(__dirname, '../static'),
      to: config.dev.assetsSubDirectory,
      ignore: ['.*']
    }])
  ]
})

module.exports = new Promise((resolve, reject) => {
  portfinder.basePort = process.env.PORT || config.dev.port
  portfinder.getPort((err, port) => {
    if (err) {
      reject(err)
    } else {
      // publish the new Port, necessary for e2e tests
      process.env.PORT = port
      // add port to devServer config
      devWebpackConfig.devServer.port = port

      // Add FriendlyErrorsPlugin
      devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({
        compilationSuccessInfo: {
          messages: [
            `Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`
          ],
        },
        onErrors: config.dev.notifyOnErrors ?
          utils.createNotifierCallback() : undefined
      }))

      resolve(devWebpackConfig)
    }
  })
})
