UNPKG

openharmony-iconfont-cli

Version:

在openharmony框架中使用iconfont图标,不支持多色彩,依赖字体。

96 lines (95 loc) 5.94 kB
#!/usr/bin/env node "use strict"; 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();