const { log } = require("console"); const fs = require("fs"); const path = require("path"); const folderPath = "./configs"; const scope = [ "StdItems", // "ItemMergeConfig", "MergeConfig", "MergeTotal", "RecyclingSettingConfig", "UpstarConfig", "Monster" ]; // 自定义排序函数 function customSort(arr) { return arr.sort((a, b) => { const isANumeric = !isNaN(a); const isBNumeric = !isNaN(b); if (isANumeric && isBNumeric) { return parseFloat(a) - parseFloat(b); } else if (isANumeric) { return -1; } else if (typeof a == "object") { return -1; } else if (isBNumeric) { return 1; } else { return a.localeCompare(b); } }); } // 递归排序函数 function sortObject(obj) { if (Array.isArray(obj)) { // 如果是数组,使用自定义排序函数 return customSort(obj.map((item) => sortObject(item))); } else if (typeof obj === "object" && obj !== null) { // 如果是对象,递归处理每个属性 const sortedObj = {}; Object.keys(obj) .sort() .forEach((key) => { sortedObj[key] = sortObject(obj[key]); }); return sortedObj; } else { // 如果是基本类型,直接返回 return obj; } } const start = () => { const files = fs.readdirSync(folderPath); // 过滤出所有的 JSON 文件 const jsonFiles = files.filter((file) => path.extname(file) === ".json").filter((file) => scope.map((e) => `${e}.json`).includes(file)); jsonFiles.forEach((file) => { const json = JSON.parse(fs.readFileSync(path.join(folderPath, file), "utf8")); const filename = path.basename(file, path.extname(file)); const sortedJson = sortObject(json); const jsonstr = JSON.stringify(sortedJson, null, 2); fs.writeFileSync(`${folderPath}/${filename}.json`, jsonstr); }); }; start();