Merge pull request #58 from haibiao-gu/main
feat(icon): 支持读取iconfont图标前缀并生成对应ts文件
This commit is contained in:
@@ -101,9 +101,9 @@ function ttfToBase64(ttfPath) {
|
||||
}
|
||||
|
||||
// 生成TypeScript文件
|
||||
function generateTypeScript(originalFolderName, camelCaseName, iconData) {
|
||||
function generateTypeScript(originalFolderName, camelCaseName, iconData, iconPrefix) {
|
||||
const tsContent = `export const ${ camelCaseName } = {\n${ iconData
|
||||
.map((item) => `\t"${item.name}": "${item.unicode}"`)
|
||||
.map((item) => `\t"${ iconPrefix }${ item.name }": "${ item.unicode }"`)
|
||||
.join(",\n") }\n};\n`;
|
||||
|
||||
const outputPath = path.join("icons", originalFolderName, "index.ts");
|
||||
@@ -159,6 +159,17 @@ function processIconData(jsonPath) {
|
||||
}
|
||||
}
|
||||
|
||||
// 读取iconfont图标前缀
|
||||
function getIconPrefix(jsonPath) {
|
||||
try {
|
||||
const jsonData = JSON.parse(fs.readFileSync(jsonPath, "utf8"));
|
||||
return jsonData.css_prefix_text;
|
||||
} catch (error) {
|
||||
console.error(`❌ 读取JSON文件失败: ${jsonPath}`, error);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
// 将连字符转换为驼峰命名的函数
|
||||
function toCamelCase(str) {
|
||||
return str.replace(/-([a-z])/g, (match, letter) => letter.toUpperCase());
|
||||
@@ -204,9 +215,14 @@ function processZipFile(zipFileName) {
|
||||
|
||||
let iconData = [];
|
||||
|
||||
let iconPrefix = "";
|
||||
|
||||
// 优先使用JSON文件
|
||||
if (jsonPath) {
|
||||
iconData = processIconData(jsonPath);
|
||||
if (originalFolderName !== "iconfont") {
|
||||
iconPrefix = getIconPrefix(jsonPath);
|
||||
}
|
||||
}
|
||||
// 如果没有则尝试CSS文件
|
||||
else if (cssPath) {
|
||||
@@ -234,7 +250,7 @@ function processZipFile(zipFileName) {
|
||||
ensureDistDir(originalFolderName);
|
||||
|
||||
// 生成TypeScript文件 (使用驼峰命名作为变量名,原始名称作为路径)
|
||||
generateTypeScript(originalFolderName, folderName, iconData);
|
||||
generateTypeScript(originalFolderName, folderName, iconData, iconPrefix);
|
||||
|
||||
// 生成SCSS文件 (使用原始名称作为路径和字体名称)
|
||||
generateSCSS(originalFolderName, base64Data);
|
||||
|
||||
Reference in New Issue
Block a user