rewritePaths.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports["default"] = rewritePaths;
  6. exports.getRelativeUsePath = void 0;
  7. var _path = _interopRequireDefault(require("path"));
  8. var _logger = _interopRequireDefault(require("./logger"));
  9. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
  10. var useRegexp = /@(import|use)\s+(?:'([^']+)'|"([^"]+)"|([^\s;]+))/g;
  11. var getRelativeUsePath = function getRelativeUsePath(oldUsePath, absoluteUsePath, moduleContext) {
  12. // from node_modules
  13. if (/^~/.test(oldUsePath)) {
  14. return oldUsePath;
  15. }
  16. return _path["default"].relative(moduleContext, absoluteUsePath);
  17. };
  18. exports.getRelativeUsePath = getRelativeUsePath;
  19. function rewritePaths(error, file, contents, moduleContext, callback) {
  20. if (error) {
  21. _logger["default"].debug('Resources: **not found**');
  22. return callback(error);
  23. }
  24. if (!/\.s[ac]ss$/i.test(file)) {
  25. return callback(null, contents);
  26. }
  27. var rewritten = contents.replace(useRegexp, function (entire, importer, single, _double, unquoted) {
  28. // Don't rewrite imports from built-ins
  29. if ([single, _double].some(function (match) {
  30. return match && match.indexOf('sass:') === 0;
  31. })) {
  32. return entire;
  33. }
  34. var oldUsePath = single || _double || unquoted;
  35. var absoluteUsePath = _path["default"].join(_path["default"].dirname(file), oldUsePath);
  36. var relUsePath = getRelativeUsePath(oldUsePath, absoluteUsePath, moduleContext);
  37. var newUsePath = relUsePath.split(_path["default"].sep).join('/');
  38. _logger["default"].debug("Resources: @".concat(importer, " of ").concat(oldUsePath, " changed to ").concat(newUsePath));
  39. var lastCharacter = entire[entire.length - 1];
  40. var quote = lastCharacter === "'" || lastCharacter === '"' ? lastCharacter : '';
  41. return "@".concat(importer, " ").concat(quote).concat(newUsePath).concat(quote);
  42. });
  43. callback(null, rewritten);
  44. return undefined;
  45. }