sass-alias
Version:
sass-alias is a node-sass and dart-sass importer that brings aliasing to sass.
51 lines (50 loc) • 2.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolve = void 0;
var url_1 = require("url");
var import_metadata_1 = require("./import-metadata");
var file_system_1 = require("./utils/file-system");
var path_1 = require("./utils/path");
function resolve(args) {
var metadata = (0, import_metadata_1.getImportMetadata)(args);
if (/^.*\.import\.(sass|scss)/.test(metadata.file) && !args.fromImport)
return null;
if (!metadata.file) {
var templates = ['{path}/index.sass', '{path}/index.scss'];
return getFileURLFromTemplates(templates, function (template) {
return template.replace('{path}', (0, path_1.removeFinalSlash)(metadata.replaced));
});
}
else if (metadata.extension) {
var templates = ['{directory}/{filename}.{extension}', '{directory}/_{filename}.{extension}'];
return getFileURLFromTemplates(templates, function (template) {
return template
.replace('{directory}', (0, path_1.removeFinalSlash)(metadata.directory))
.replace('{filename}', metadata.filename)
.replace('{extension}', metadata.extension);
});
}
else if (metadata.filename) {
var templates = [
'{directory}/{filename}.sass',
'{directory}/{filename}.scss',
'{directory}/_{filename}.sass',
'{directory}/_{filename}.scss',
];
return getFileURLFromTemplates(templates, function (template) {
return template
.replace('{directory}', (0, path_1.removeFinalSlash)(metadata.directory))
.replace('{filename}', metadata.filename);
});
}
return null;
}
exports.resolve = resolve;
function getFileURLFromTemplates(templates, transform) {
return templates.reduce(function (resolved, template) {
if (resolved instanceof URL)
return resolved;
var filepath = transform(template);
return (0, file_system_1.existsAndIsFileSync)(filepath) ? (0, url_1.pathToFileURL)(filepath) : null;
}, null);
}