const Path = require('path');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const createModuleAliases = require('./utils/createModuleAliases.js');
const SCSS_ROOT = Path.join(__dirname, 'client/scss/');

const customAliases = createModuleAliases();

module.exports = {
  target: 'web',
  entry : ['@babel/polyfill', 'whatwg-fetch', './client/build/index.js'],
  output: {
    path      : Path.join(__dirname, 'public/bundle'),
    publicPath: '/bundle/',
    filename  : 'bundle.js',
  },
  module: {
    rules: [
      {
        test: /\.scss$/,
        use : ExtractTextPlugin.extract({
          fallback: 'style-loader',
          use     : ['css-loader', 'sass-loader'],
        }),
      },
      {
        test: /\.(png|jpg|gif|otf|ttf|svg)$/,
        use : [
          {
            loader : 'url-loader',
            options: {
              limit: 8192,
              name : '[name]-[hash].[ext]',
            },
          },
        ],
      },
    ],
  },
  resolve: {
    modules: [
      SCSS_ROOT,
      'node_modules',
      __dirname,
    ],
    alias     : customAliases,
    extensions: ['.js', '.jsx', '.scss'],
  },
  plugins: [
    new ExtractTextPlugin('style.css'),
  ],
};