@mypaas/hcm-cli
Version:
Vant Cli 是一个 Vue 组件库构建工具,通过 Vant Cli 可以快速搭建一套功能完备的 Vue 组件库。
46 lines (45 loc) • 1.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.combineStyle = void 0;
const fs_extra_1 = require("fs-extra");
const path_1 = require("path");
const common_1 = require("../common");
const convert_css_var_1 = require("./convert-css-var");
const convert_to_js_1 = require("./convert-to-js");
async function combine(dir, files) {
const customStyle = files.find(file => /honeycomb.*\.less$/.test(file));
if (!customStyle)
return files;
let target = customStyle.includes('var') ? 'var.less' : 'index.less';
if (!files.includes(target))
return files;
target = path_1.join(dir, target);
const source = path_1.join(dir, customStyle);
fs_extra_1.appendFileSync(target, fs_extra_1.readFileSync(source));
// 转换为 css 变量
if (target.includes('var.less')) {
// 复制一份没有使用全局变量的样式
await fs_extra_1.copyFile(target, target.replace('var.less', 'var-pure.less'));
await convert_css_var_1.convertCssVar(target);
}
fs_extra_1.removeSync(source);
return files.filter(file => file !== customStyle);
}
async function combineStyle(dir) {
let files = fs_extra_1.readdirSync(dir);
files = await combine(dir, files);
await Promise.all(files.map(filename => {
const filePath = path_1.join(dir, filename);
if (common_1.isDemoDir(filePath) || common_1.isTestDir(filePath)) {
return fs_extra_1.remove(filePath);
}
if (common_1.isDir(filePath)) {
return combineStyle(filePath);
}
if (filePath.lastIndexOf('.share.less') >= 0) {
return convert_to_js_1.convertToJs(filePath);
}
return Promise.resolve();
}));
}
exports.combineStyle = combineStyle;