openharmony-iconfont-cli
Version:
在openharmony框架中使用iconfont图标,不支持多色彩,依赖字体。
96 lines (95 loc) • 5.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var fs_1 = tslib_1.__importDefault(require("fs"));
var rimraf_1 = tslib_1.__importDefault(require("rimraf"));
var colors_1 = tslib_1.__importDefault(require("colors"));
var util_1 = require("util");
var path_1 = tslib_1.__importStar(require("path"));
// import mkdirp from "mkdirp";
// import glob from "glob";
// import colors from "colors";
var cssjson_1 = require("cssjson");
var lodash_1 = require("lodash");
var umi_request_1 = require("umi-request");
var getConfig_1 = require("../libs/getConfig");
var getTemplate_1 = require("../libs/getTemplate");
var downloadFileAsync_1 = require("../libs/downloadFileAsync");
var config = getConfig_1.getConfig();
var request = umi_request_1.extend({});
var render = lodash_1.template(getTemplate_1.getTemplate("icon.hml"));
var renderCSS = lodash_1.template(getTemplate_1.getTemplate("icon.css"));
var renderJs = lodash_1.template(getTemplate_1.getTemplate("icon.js"));
var renderVanCSS = lodash_1.template(getTemplate_1.getTemplate("van-icon.less"));
var renderVanTs = lodash_1.template(getTemplate_1.getTemplate("van-icon.ts"));
function createOpenharmonyIcon() {
var _a, _b;
return tslib_1.__awaiter(this, void 0, void 0, function () {
var symbol_url, save_dir, icon_prefix, trim_icon_prefix, default_icon_size, prefix_cls, use_vant, symbolCode, saveDir, fileName, saveFont, err_1, data, map, newMap, mapJson;
return tslib_1.__generator(this, function (_c) {
switch (_c.label) {
case 0:
console.log(colors_1.default.yellow("\uD83D\uDD28 Building fresh icons..."));
symbol_url = config.symbol_url, save_dir = config.save_dir, icon_prefix = config.icon_prefix, trim_icon_prefix = config.trim_icon_prefix, default_icon_size = config.default_icon_size, prefix_cls = config.prefix_cls, use_vant = config.use_vant;
symbolCode = (_b = (_a = symbol_url
.match(/font_(.+?).css/)) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.replace(".css", "");
saveDir = path_1.default.resolve(save_dir);
fileName = path_1.basename(save_dir) || "iconfont";
saveFont = path_1.default.join(saveDir, symbolCode + ".ttf");
return [4 /*yield*/, util_1.promisify(rimraf_1.default)(saveDir)];
case 1:
_c.sent();
_c.label = 2;
case 2:
_c.trys.push([2, 4, , 6]);
return [4 /*yield*/, util_1.promisify(fs_1.default.access)(saveDir)];
case 3:
_c.sent();
return [3 /*break*/, 6];
case 4:
err_1 = _c.sent();
return [4 /*yield*/, util_1.promisify(fs_1.default.mkdir)(saveDir)];
case 5:
_c.sent();
return [3 /*break*/, 6];
case 6: return [4 /*yield*/, downloadFileAsync_1.downloadFileAsync("http://at.alicdn.com/t/" + symbolCode + ".ttf", saveFont)];
case 7:
_c.sent();
return [4 /*yield*/, request.get(symbol_url)];
case 8:
data = _c.sent();
map = cssjson_1.toJSON(data).children;
newMap = {};
Object.keys(map)
.filter(function (v) { return v.search(icon_prefix) === 1; })
.forEach(function (k) {
var _a, _b, _c, _d;
var key = k.substr(1).replace(":before", "");
if (trim_icon_prefix)
key = key.replace(icon_prefix, "");
var content = (_d = (_c = (_b = (_a = map[k]) === null || _a === void 0 ? void 0 : _a.attributes) === null || _b === void 0 ? void 0 : _b.content) === null || _c === void 0 ? void 0 : _c.replace('"\\e', "\\ue")) === null || _d === void 0 ? void 0 : _d.replace('"', "");
newMap[key] = content;
});
mapJson = JSON.stringify(newMap, null, 2).replace(/"\\/g, '"');
if (use_vant) {
fs_1.default.writeFileSync(path_1.default.join(saveDir, fileName + ".hml"), getTemplate_1.getTemplate("van-icon.hml"));
fs_1.default.writeFileSync(path_1.default.join(saveDir, fileName + ".less"), renderVanCSS({
prefix_cls: prefix_cls,
symbolCode: symbolCode,
save_dir: "/node_modules/oh-vant/lib/" + save_dir.split('/')[2],
}));
fs_1.default.writeFileSync(path_1.default.join(saveDir, fileName + ".ts"), renderVanTs({ prefix_cls: prefix_cls, default_icon_size: default_icon_size, map: mapJson }));
}
else {
fs_1.default.writeFileSync(path_1.default.join(saveDir, fileName + ".hml"), render({ prefix_cls: prefix_cls }));
fs_1.default.writeFileSync(path_1.default.join(saveDir, fileName + ".css"), renderCSS({ prefix_cls: prefix_cls, symbolCode: symbolCode, save_dir: save_dir.substr(1) }));
fs_1.default.writeFileSync(path_1.default.join(saveDir, fileName + ".js"), renderJs({ prefix_cls: prefix_cls, default_icon_size: default_icon_size, map: mapJson }));
}
console.log("\n" + colors_1.default.green("√") + " All icons have been putted into dir: " + colors_1.default.green(config.save_dir) + "\n");
return [2 /*return*/];
}
});
});
}
createOpenharmonyIcon();