const webpack = require('atool-build/lib/webpack');

module.exports = function (webpackConfig) {
  // remove common.js
  webpackConfig.plugins = webpackConfig.plugins.filter((plugin) => {
    return !(plugin instanceof webpack.optimize.CommonsChunkPlugin);
  });

  if (process.env.RUN_ENV === 'WEBSITE') {
    const component = process.env.COMPONENT_STYLE;

    webpackConfig.entry = {
      index: './site/entry/index.jsx',
    };
    webpackConfig.resolve.root = process.cwd();
    webpackConfig.resolve.alias = {
      antd: process.cwd(),
      site: 'site',
    };

    const babelConfig = require('atool-build/lib/getBabelCommonConfig')();
    babelConfig.plugins.push([
      'antd',
      {
        // style: true,
        libDir: 'components',
      }
    ]);

    const componentRegExp = component && new RegExp(`components/${component.toLowerCase()}/demo/.*\.md`);
    webpackConfig.module.loaders.push({
      test: component ? componentRegExp : /\.md$/,
      exclude: /node_modules/,
      loader: `babel?${JSON.stringify(babelConfig)}!antd-md`,
    });

    if (component !== undefined) {
      webpackConfig.module.loaders.push({
        test: /\.md$/,
        exclude: [/node_modules/, componentRegExp],
        loader: 'babel!antd-md',
      });
    }
  }

  if (process.env.RUN_ENV === 'PRODUCTION') {
    const entry = ['./style/index.less', './index.js'];
    webpackConfig.entry = {
      'antd.min': entry,
    };
    webpackConfig.externals = {
      react: {
        root: 'React',
        commonjs2: 'react',
        commonjs: 'react',
        amd: 'react'
      },
      'react-dom': {
        root: 'ReactDOM',
        commonjs2: 'react-dom',
        commonjs: 'react-dom',
        amd: 'react-dom'
      }
    };
    webpackConfig.output.library = 'antd';
    webpackConfig.output.libraryTarget = 'umd';

    const uncompressedWebpackConfig = Object.assign({}, webpackConfig);
    uncompressedWebpackConfig.entry = {
      antd: entry,
    };
    uncompressedWebpackConfig.plugins = webpackConfig.plugins.filter((plugin) => {
      return !(plugin instanceof webpack.optimize.UglifyJsPlugin);
    });

    return [
      webpackConfig,
      uncompressedWebpackConfig,
    ];
  }

  return webpackConfig;
};
