/*

* Webpack config with Babel, Sass and PostCSS support.
*/

var PROD = process.env.NODE_ENV === 'production' var DEBUG = !PROD

var webpack = require('webpack') var join = require('path').join var ExtractTextPlugin = require('extract-text-webpack-plugin') var LiveReloadPlugin = DEBUG ? require('webpack-livereload-plugin') : null

module.exports = {

cache: true,

context: __dirname,

entry: {
  // JavaScript
  'javascripts/webpack/app': './app/webpack/js/app.js',

  // Stylesheets
  'stylesheets/webpack/app': './app/webpack/css/app.js',
},

output: {
  path: join(__dirname, 'vendor/assets'),
  filename: '[name].js',
  pathinfo: DEBUG ? true : false,
  devtoolModuleFilenameTemplate: 'webpack:///[absolute-resource-path]'
},

module: {
  loaders: [
    {
      test: /\.scss$/,
      loader: DEBUG
        ? ExtractTextPlugin.extract('style-loader', 'css-loader?-url&sourceMap&importLoaders=1!postcss-loader?sourceMap=inline!sass-loader?sourceMap')
        : ExtractTextPlugin.extract('style-loader', 'css-loader?-url!postcss-loader!sass-loader')
    },
    {
      test: /\.(js|jsx)$/,
      exclude: /node_modules/,
      loaders: [ 'babel-loader' ],
      query: {
        cacheDirectory: true
      }
    },
  ],
},

resolve: {
  extensions: ['', '.js', '.jsx']
},

postcss: [
  require('autoprefixer')(),
  require('postcss-asset-url-rails')()
],

sassLoader: {
  includePaths: join(__dirname, 'node_modules'),
  outputStyle: DEBUG ? 'nested' : 'compressed'
},

plugins: [
  // allChunks will preserve source maps
  new ExtractTextPlugin('[name].css.erb', { allChunks: true }),

  // Ignore locales because it's around 400kb
  new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)
].concat(DEBUG ? [
  new LiveReloadPlugin({ appendScriptTag: true })
] : []),

// Best trade-off with compatibility and speed
devtool: DEBUG ? 'cheap-module-eval-source-map' : undefined,

debug: DEBUG ? true : false

}