LukeSheard/Monzo-Dashboard

View on GitHub
webpack/config.js

Summary

Maintainability
A
0 mins
Test Coverage
/* eslint-disable camelcase */
import {
  css_loader_parser as cssLoaderParser,
  css_modules_loader_parser as cssModulesLoaderParser,
  style_loader_filter as styleLoaderFilter,
  style_loader_path_extractor as styleLoaderPathExtractor,
} from 'webpack-isomorphic-tools/plugin';

/* eslint-enable */

const filter = (module, regex, options, log) => {
  if (options.development) {
    return styleLoaderFilter(module, regex, options, log);
  }
  return regex.test(module.name);
};

const path = (module, options, log) => {
  if (options.development) {
    return styleLoaderPathExtractor(module, options, log);
  }
  return module.name;
};

const parser = (loader) => (module, options, log) => {
  if (options.development) {
    return loader(module, options, log);
  }
  return module.source;
};

const {
  NODE_ENV,
} = process.env;

const _DEV_ = (NODE_ENV || 'development') === 'development';

const config = {
  debug: _DEV_,
  assets: {
    images: {
      extensions: [
        'png',
        'jpg',
        'gif',
        'ico',
        'svg',
      ],
    },
    sass: {
      extensions: [
        'scss',
      ],
      filter,
      path,
      parser: parser(cssModulesLoaderParser),
    },
    css: {
      extensions: [
        'css',
      ],
      filter,
      path,
      parser: parser(cssLoaderParser),
    },
  },
};

module.exports = config;