sass-all-variable-loader
Version:
Loads sass files and extracts all variable declarations including from the imported sass files.
46 lines (45 loc) • 1.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var fs = require("fs");
var _ = require("lodash");
var extractVariables_1 = require("./extractVariables");
var packageJson = require('../package.json');
var writeTypes = function (strings, name, value, sub) {
if (sub === void 0) { sub = false; }
var subExpr = sub ? ' ' : 'const ';
if (_.isString(value)) {
strings.push(" " + subExpr + name + ": string;");
}
else if (_.isNumber(value)) {
strings.push(" " + subExpr + name + ": number;");
}
else if (_.isBoolean(value)) {
strings.push(" " + subExpr + name + ": boolean;");
}
else if (_.isObjectLike(value)) {
strings.push(" " + subExpr + name + ": {");
Object.keys(value)
.forEach(function (k) {
writeTypes(strings, k, value[k], true);
});
strings.push(' };');
}
else {
}
};
// noinspection JSUnusedGlobalSymbols
exports.declareModule = function (file, options) {
var variables = extractVariables_1.extractVariables(file, options);
var statements = Object.keys(variables)
.reduce(function (strings, name) {
var value = variables[name];
writeTypes(strings, name, value);
return strings;
}, []);
var result = "/**\n * This file is autogenerated by " + packageJson.name + ".\n */\n\ndeclare module 'scss/variables.scss' {\n" + statements.join('\n') + "\n}\n";
var destFile = options.destFile;
if (destFile) {
fs.writeFileSync(destFile, result);
}
return result;
};