loader.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports["default"] = _default;
  6. var _fs = _interopRequireDefault(require("fs"));
  7. var _path = _interopRequireDefault(require("path"));
  8. var _async = _interopRequireDefault(require("async"));
  9. var _getOptions = _interopRequireDefault(require("./utils/getOptions"));
  10. var _processResources = _interopRequireDefault(require("./utils/processResources"));
  11. var _expandResourceGlobs = _interopRequireDefault(require("./utils/expandResourceGlobs"));
  12. var _rewritePaths = _interopRequireDefault(require("./utils/rewritePaths"));
  13. var _logger = _interopRequireDefault(require("./utils/logger"));
  14. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
  15. /* eslint func-names: 0 */
  16. function _default(source) {
  17. var webpack = this;
  18. if (webpack.cacheable) webpack.cacheable();
  19. var callback = webpack.async(); // eslint-disable-next-line no-underscore-dangle
  20. global.__DEBUG__ = process.env.DEBUG === 'sass-resources-loader' || process.env.DEBUG === '*';
  21. _logger["default"].debug('Hey, we\'re in DEBUG mode! Yabba dabba doo!');
  22. var options = (0, _getOptions["default"])(this);
  23. var resourcesFromConfig = options.resources;
  24. if (!resourcesFromConfig) {
  25. var error = new Error('Can\'t find sass resources in your config. Make sure loader.options.resources exists');
  26. return callback(error);
  27. }
  28. var resourcesLocations = (0, _expandResourceGlobs["default"])(resourcesFromConfig);
  29. var moduleContext = webpack.context;
  30. var webpackConfigContext = webpack.rootContext || webpack.options && webpack.options.context || process.cwd();
  31. if (!webpack.rootContext && !webpack.options && !webpack.options.context) {
  32. _logger["default"].debug('`options.context` is missing. Using current working directory as a root instead:', process.cwd());
  33. }
  34. _logger["default"].debug('Module context:', moduleContext);
  35. _logger["default"].debug('Webpack config context:', webpackConfigContext);
  36. _logger["default"].debug('Resources:', resourcesLocations);
  37. if (!resourcesLocations.length) {
  38. var _error = new Error("\n Something wrong with provided resources.\n Make sure 'options.resources' is String or Array of Strings with a valid file path.\n ");
  39. return callback(_error);
  40. }
  41. var files = resourcesLocations.map(function (resource) {
  42. var file = _path["default"].resolve(webpackConfigContext, resource);
  43. webpack.addDependency(file);
  44. return file;
  45. });
  46. _async["default"].map(files, function (file, cb) {
  47. _fs["default"].readFile(file, 'utf8', function (error, contents) {
  48. (0, _rewritePaths["default"])(error, file, contents, moduleContext, cb);
  49. });
  50. }, function (error, resources) {
  51. (0, _processResources["default"])(error, resources, source, options, moduleContext, callback);
  52. });
  53. return undefined;
  54. }