UNPKG

sass-resources-loader

Version:
62 lines (45 loc) 1.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = rewritePaths; exports.getRelativeUsePath = void 0; var _path = _interopRequireDefault(require("path")); var _logger = _interopRequireDefault(require("./logger")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var useRegexp = /@(import|use)\s+(?:'([^']+)'|"([^"]+)"|([^\s;]+))/g; var getRelativeUsePath = function getRelativeUsePath(oldUsePath, absoluteUsePath, moduleContext) { // from node_modules if (/^~/.test(oldUsePath)) { return oldUsePath; } return _path["default"].relative(moduleContext, absoluteUsePath); }; exports.getRelativeUsePath = getRelativeUsePath; function rewritePaths(error, file, contents, moduleContext, callback) { if (error) { _logger["default"].debug('Resources: **not found**'); return callback(error); } if (!/\.s[ac]ss$/i.test(file)) { return callback(null, contents); } var rewritten = contents.replace(useRegexp, function (entire, importer, single, _double, unquoted) { // Don't rewrite imports from built-ins if ([single, _double].some(function (match) { return match && match.indexOf('sass:') === 0; })) { return entire; } var oldUsePath = single || _double || unquoted; var absoluteUsePath = _path["default"].join(_path["default"].dirname(file), oldUsePath); var relUsePath = getRelativeUsePath(oldUsePath, absoluteUsePath, moduleContext); var newUsePath = relUsePath.split(_path["default"].sep).join('/'); _logger["default"].debug("Resources: @".concat(importer, " of ").concat(oldUsePath, " changed to ").concat(newUsePath)); var lastCharacter = entire[entire.length - 1]; var quote = lastCharacter === "'" || lastCharacter === '"' ? lastCharacter : ''; return "@".concat(importer, " ").concat(quote).concat(newUsePath).concat(quote); }); callback(null, rewritten); return undefined; }