var path = require('path') var config = require('./config') var utils = require('./utils') var projectRoot = path.resolve(__dirname, '../../') var StatsPlugin = require('stats-webpack-plugin')

var env = process.env.NODE_ENV // check env & config/index.js to decide weither to enable CSS Sourcemaps for the // various preprocessor loaders added to vue-loader at the end of this file var cssSourceMapDev = (env === 'development' && config.dev.cssSourceMap) var cssSourceMapProd = (env === 'production' && config.build.productionSourceMap) var useCssSourceMap = cssSourceMapDev || cssSourceMapProd

module.exports = {

entry: {
  application: './webpack/application.js'
},
output: {
  path: config.build.assetsRoot,
  publicPath: '/webpack/',
  filename: '[name].js'
},
resolve: {
  extensions: ['', '.js', '.vue'],
  fallback: [
    path.join(projectRoot, 'node_modules'),
  ],
  alias: {
    'vue$': 'vue/dist/vue.common.js',
    'components': path.resolve(projectRoot, 'app/components'),
    'assets': path.resolve(projectRoot, 'app/assets')
  }
},
resolveLoader: {
  fallback: [path.join(projectRoot, 'node_modules')]
},
module: {
  preLoaders: [
    {
      test: /\.vue$/,
      loader: 'eslint',
      include: projectRoot,
      exclude: /node_modules/
    },
    {
      test: /\.js$/,
      loader: 'eslint',
      include: projectRoot,
      exclude: /node_modules/
    }
  ],
  loaders: [
    {
      test: /\.vue$/,
      loader: 'vue'
    },
    {
      test: /\.js$/,
      loader: 'babel',
      include: projectRoot,
      exclude: /node_modules/
    },
    {
      test: /\.pug$/,
      loader: 'pug',
      include: projectRoot,
      exclude: /node_modules/
    },
    {
      test: /\.sass$/,
      loader: 'sass',
      include: projectRoot,
      exclude: /node_modules/
    },
    {
      test: /\.json$/,
      loader: 'json'
    },
    {
      test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
      loader: 'url',
      query: {
        limit: 10000,
        name: utils.assetsPath('img/[name].[hash:7].[ext]')
      }
    },
    {
      test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
      loader: 'url',
      query: {
        limit: 10000,
        name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
      }
    }
  ]
},
eslint: {
  formatter: require('eslint-friendly-formatter')
},
vue: {
  loaders: utils.cssLoaders({ sourceMap: useCssSourceMap }),
  postcss: [
    require('autoprefixer')({
      browsers: ['last 2 versions']
    })
  ]
},
plugins: [
  // must match config.webpack.manifest_filename
  new StatsPlugin('manifest.json', {
    // We only need assetsByChunkName
    chunkModules: false,
    source: false,
    chunks: false,
    modules: false,
    assets: true
  }),
]

}