nimble-ui
Version:
64 lines (59 loc) • 2.03 kB
JavaScript
const fs = require('fs');
const path = require('path');
const transform = require('./transform');
let uiMap;
// eslint-disable-next-line require-jsdoc
function resolve (...dir) {
return path.join.apply(this, [__dirname, '..'].concat(dir));
}
module.exports = function(isSync, extendBaseScss, extendScss) {
// return function(importName, styleName, hasImportName) {
genScssVar(extendBaseScss, extendScss);
return function(importName) {
if (!uiMap) {
uiMap = transform(true, isSync, '');
console.log('UiMap', uiMap);
}
let _moduleDir = uiMap[(importName || '').toLowerCase()];
if (!_moduleDir) {
console.log('importName', importName);
}
return _moduleDir;
};
};
/**
* 生成_var.scss
* @param {*} extendBaseScss 注入的内容
* @param {*} extendScss 注入的内容
*/
function genScssVar(extendBaseScss, extendScss) {
if (extendScss || extendBaseScss) {
if (typeof extendScss === 'string') {
extendScss = [extendScss];
} else if (!extendScss) {
extendScss = [];
}
if (typeof extendBaseScss === 'string') {
extendBaseScss = [extendBaseScss];
} else if (!extendBaseScss) {
extendBaseScss = [];
}
let defaultStr = fs.readFileSync(resolve('src/_assets/style/_var.scss.default'));
if (!(defaultStr instanceof Array)) {
defaultStr = (defaultStr.toString() || '').split(';');
}
if (extendScss instanceof Array) {
defaultStr.splice(1, 0, ...extendBaseScss);
defaultStr = defaultStr.concat(extendScss);
}
let list = [];
(defaultStr || []).forEach((item) => {
item = item.replace('\n', '').replace('\r', '');
if (item && item !== '\n') {
list.push(item);
}
});
list.push('');
fs.writeFileSync(resolve('src/_assets/style/_var.scss'), list.join(';\n'));
}
}