text: import path from 'path';
  import webpack from 'webpack';
  import HtmlWebpackPlugin from 'html-webpack-plugin';
  import CopyWebpackPlugin from 'copy-webpack-plugin';
  import babelLoaderConfig from './babel.prod';
  import { getConfigDir, includePaths, excludePaths, loadEnv, nodePaths } from './utils';
  import { getPreviewHeadHtml, getManagerHeadHtml } from '../utils';
  import { version } from '../../../package.json';
  
  export default function() {
    const entries = {
      preview: [require.resolve('./polyfills'), require.resolve('./globals')],
      manager: [require.resolve('./polyfills'), path.resolve(__dirname, '../../client/manager')],
    };
  
    const config = {
      bail: true,
      devtool: '#cheap-module-source-map',
      entry: entries,
      output: {
        filename: 'static/[name].[chunkhash].bundle.js',
        // Here we set the publicPath to ''.
        // This allows us to deploy storybook into subpaths like GitHub pages.
        // This works with css and image loaders too.
        // This is working for storybook since, we don't use pushState urls and
        // relative URLs works always.
        publicPath: '',
      },
      plugins: [
        new HtmlWebpackPlugin({
          filename: 'index.html',
          chunks: ['manager'],
          data: {
            managerHead: getManagerHeadHtml(getConfigDir()),
            version,
          },
          template: require.resolve('../index.html.ejs'),
        }),
        new HtmlWebpackPlugin({
          filename: 'iframe.html',
          excludeChunks: ['manager'],
          data: {
            previewHead: getPreviewHeadHtml(getConfigDir()),
          },
          template: require.resolve('../iframe.html.ejs'),
        }),
        new CopyWebpackPlugin([
          { from: require.resolve('@webcomponents/webcomponentsjs/webcomponents-lite.js') },
          { from: require.resolve('@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js') },
        ]),
        new webpack.DefinePlugin(loadEnv({ production: true })),
        new webpack.optimize.UglifyJsPlugin({
          compress: {
            screw_ie8: true,
            warnings: false,
          },
          mangle: false,
          output: {
            comments: false,
            screw_ie8: true,
          },
        }),
      ],
      module: {
        rules: [
          {
            test: /\.jsx?$/,
            loader: require.resolve('babel-loader'),
            query: babelLoaderConfig,
            include: includePaths,
            exclude: excludePaths,
          },
          {
            test: /\.html$/,
            use: [
              {
                loader: require.resolve('babel-loader'),
                query: babelLoaderConfig,
              },
              {
                loader: require.resolve('polymer-webpack-loader'),
                options: { processStyleLinks: true },
              },
            ],
          },
        ],
      },
      resolve: {
        // Since we ship with json-loader always, it's better to move extensions to here
        // from the default config.
        extensions: ['.js', '.json', '.jsx'],
        // Add support to NODE_PATH. With this we could avoid relative path imports.
        // Based on this CRA feature: https://github.com/facebookincubator/create-react-app/issues/253
        modules: ['node_modules'].concat(nodePaths),
        alias: {
          react$: require.resolve('react'),
          'react-dom$': require.resolve('react-dom'),
        },
      },
    };
  
    return config;
  }
  