feat(icon): 支持读取iconfont图标前缀并生成对应ts文件
- 新增getIconPrefix函数读取图标前缀配置 - 在generateTypeScript函数中支持传入图标前缀参数 - 优化处理流程,当文件夹不是iconfont时读取其前缀
This commit is contained in:
@@ -101,9 +101,9 @@ function ttfToBase64(ttfPath) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 生成TypeScript文件
|
// 生成TypeScript文件
|
||||||
function generateTypeScript(originalFolderName, camelCaseName, iconData) {
|
function generateTypeScript(originalFolderName, camelCaseName, iconData, iconPrefix) {
|
||||||
const tsContent = `export const ${ camelCaseName } = {\n${ iconData
|
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`;
|
.join(",\n") }\n};\n`;
|
||||||
|
|
||||||
const outputPath = path.join("icons", originalFolderName, "index.ts");
|
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) {
|
function toCamelCase(str) {
|
||||||
return str.replace(/-([a-z])/g, (match, letter) => letter.toUpperCase());
|
return str.replace(/-([a-z])/g, (match, letter) => letter.toUpperCase());
|
||||||
@@ -204,9 +215,14 @@ function processZipFile(zipFileName) {
|
|||||||
|
|
||||||
let iconData = [];
|
let iconData = [];
|
||||||
|
|
||||||
|
let iconPrefix = "";
|
||||||
|
|
||||||
// 优先使用JSON文件
|
// 优先使用JSON文件
|
||||||
if (jsonPath) {
|
if (jsonPath) {
|
||||||
iconData = processIconData(jsonPath);
|
iconData = processIconData(jsonPath);
|
||||||
|
if (originalFolderName !== "iconfont") {
|
||||||
|
iconPrefix = getIconPrefix(jsonPath);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 如果没有则尝试CSS文件
|
// 如果没有则尝试CSS文件
|
||||||
else if (cssPath) {
|
else if (cssPath) {
|
||||||
@@ -234,7 +250,7 @@ function processZipFile(zipFileName) {
|
|||||||
ensureDistDir(originalFolderName);
|
ensureDistDir(originalFolderName);
|
||||||
|
|
||||||
// 生成TypeScript文件 (使用驼峰命名作为变量名,原始名称作为路径)
|
// 生成TypeScript文件 (使用驼峰命名作为变量名,原始名称作为路径)
|
||||||
generateTypeScript(originalFolderName, folderName, iconData);
|
generateTypeScript(originalFolderName, folderName, iconData, iconPrefix);
|
||||||
|
|
||||||
// 生成SCSS文件 (使用原始名称作为路径和字体名称)
|
// 生成SCSS文件 (使用原始名称作为路径和字体名称)
|
||||||
generateSCSS(originalFolderName, base64Data);
|
generateSCSS(originalFolderName, base64Data);
|
||||||
|
|||||||
Reference in New Issue
Block a user