'use strict'

const path = require("path");
const extractTextPlugin = require('extract-text-webpack-plugin');
const postcssImport = require('postcss-import');
const autoprefixer = require('autoprefixer');

function resolve (dir) {
  return path.join(__dirname, '..', dir);
}

function cssLoaders (type) {
	var postcssLoader = {
					loader:'postcss-loader',
					options:{
						plugins:[postcssImport,autoprefixer],
						browser:['last 5 versions']
					}
				};

	if(process.env.NODE_ENV === 'development'){
		var loaders = ['style-loader','css-loader',postcssLoader];
		if(type && type == 'sass'){
			loaders.push("sass-loader");
		}
		return loaders;
	}
	else{
		var loaders = {
	          	fallback: 'style-loader',
	          	use: ['css-loader',postcssLoader, 'sass-loader']
	        };

	    if(type && type == 'sass'){
			loaders.use.push("sass-loader");
		}
		return extractTextPlugin.extract(loaders);
	}
}
module.exports = {
	entry: {
		app:'./client/index.js',
    common:['./client/common.js']
	},
	output: {
		path: resolve('./dist'),
		filename:'js/[name]-[hash].js',
		publicPath:''
	},
  // devServer:{
  //   historyApiFallback: true,
  //   contentBase: './',
  //   hot:true
  // },
	resolve: {
	    extensions: ['.js', '.jsx', '.json'],
	    alias: {
	      '@': resolve('client'),
	    }
	},
	module:{
		rules:[
			{
				test:/\.js[x]?$/,
				loader:['babel-loader'],
				exclude:resolve('node_modules/')
			},
			{
				test:/\.html$/,
				loader:'html-loader'
			},
      {
				test:/\.json$/,
				loader:'json-loader'
			},
			{
				test:/\.css$/,
				use: cssLoaders()
			},
			{
				test:/\.scss$/,
				use: cssLoaders('sass')
			},
			{
				test:/\.(jpg|png|jpeg|gif)$/,
				loaders:[
				{
					loader:'url-loader',
					options:{
						limit:1000,
						name:'assets/[name]-[hash:5].[ext]'
					}
				},
				'image-webpack-loader'
				]
			},
			{
		        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
		        loader: 'url-loader',
		        options: {
		          	limit: 10000,
		          	name: 'fonts/[name].[hash:7].[ext]'
		        }
		    }
		]
	}
}