最近在开发 npm 包时,遇到了一些小图片的使用需求。想着直接转base64嵌入代码中。不过,收到的图片格式是 SVG的,找了半天也没找到方便的转换工具。于是干脆动手写了一个 Node 脚本,实现一键将 SVG(后来又加了几个图片格式)文件转换为 base64 格式:
const fs = require("fs");
const path = require("path");
// 从命令行参数获取输入和输出路径
const svgDir = process.argv[2] || "./src/assets/svg"; // SVG 文件夹的路径
const outputFilePath =
process.argv[3] || "./src/packages/OurTab/src/const/toBase64.js"; // 输出文件的路径
let fileContent = "";
// 错误处理
try {
fs.readdirSync(svgDir).forEach((file) => {
const extname = path.extname(file);
if (extname === ".svg" || extname === ".png" || extname === ".jpg") {
const data = fs.readFileSync(path.join(svgDir, file), "utf8"); // 读取文件
const variableName = path.basename(file, extname) + "Base64"; // 生成变量名
const mimeType =
extname === ".svg" ? "image/svg+xml" : `image/${extname.slice(1)}`;
const base64 =
`data:${mimeType};base64,` + Buffer.from(data).toString("base64");
fileContent += `export const ${variableName} = '${base64}';\n`; // 生成文件内容
}
});
fs.writeFileSync(outputFilePath, fileContent, "utf8"); // 写入文件
console.log(`Base64转换完成.输出目录为: ${outputFilePath}`);
} catch (error) {
console.error(`注意 转换出现问题啦: ${error.message}`);
}
执行指令
node yourScript.js ./path/to/svg ./path/to/output.js