utils.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. const ExtractTextPlugin = require('extract-text-webpack-plugin');
  2. process.env.NODE_ENV = process.env.NODE_ENV || 'development';
  3. const IS_DEV = process.env.NODE_ENV === 'development';
  4. function styleLoader({ loaders = [], extract = !IS_DEV, minimize = !IS_DEV, fallback = 'style-loader' } = {}) {
  5. const cssLoader = {
  6. loader: 'css-loader',
  7. options: {
  8. minimize,
  9. importLoaders: 1,
  10. sourceMap: false,
  11. },
  12. };
  13. return extract ? ExtractTextPlugin.extract({
  14. fallback,
  15. use: [cssLoader, ...loaders],
  16. }) : [
  17. fallback,
  18. cssLoader,
  19. ...loaders,
  20. ];
  21. }
  22. function styleRule(options = {}) {
  23. return {
  24. test: /\.css$/,
  25. use: styleLoader(options),
  26. };
  27. }
  28. function merge(obj1, obj2) {
  29. if (!obj2) return obj1;
  30. if (Array.isArray(obj1)) return obj1.concat(obj2);
  31. const obj = Object.assign({}, obj1);
  32. Object.keys(obj2).forEach(key => {
  33. if (typeof obj[key] === 'object') {
  34. obj[key] = merge(obj[key], obj2[key]);
  35. } else {
  36. obj[key] = obj2[key];
  37. }
  38. });
  39. return obj;
  40. }
  41. exports.IS_DEV = IS_DEV;
  42. exports.styleLoader = styleLoader;
  43. exports.styleRule = styleRule;
  44. exports.merge = merge;