wangzhibo
6 天以前 7bd866831780abcf5a59c4cbb7d1be456eea7c99
packages/vite-plugin/src/utils/index.ts
@@ -7,7 +7,6 @@
export function rootDir(path: string) {
   switch (config.type) {
      case "app":
      case "uniapp-x":
         return join(process.env.UNI_INPUT_DIR!, path);
      default:
@@ -40,68 +39,12 @@
export function readFile(path: string, json?: boolean) {
   try {
      const content = fs.readFileSync(path, "utf8");
      return json ? JSON.parse(removeJsonComments(content)) : content;
      return json
         ? JSON.parse(content.replace(/\/\/.*$/gm, "").replace(/\/\*[\s\S]*?\*\//g, ""))
         : content;
   } catch (err) {}
   return "";
}
// 安全地移除JSON中的注释
function removeJsonComments(content: string): string {
   let result = "";
   let inString = false;
   let stringChar = "";
   let escaped = false;
   let i = 0;
   while (i < content.length) {
      const char = content[i];
      const nextChar = content[i + 1];
      // 处理字符串状态
      if (!inString && (char === '"' || char === "'")) {
         inString = true;
         stringChar = char;
         result += char;
      } else if (inString && char === stringChar && !escaped) {
         inString = false;
         stringChar = "";
         result += char;
      } else if (inString) {
         // 在字符串内,直接添加字符
         result += char;
         escaped = char === "\\" && !escaped;
      } else {
         // 不在字符串内,检查注释
         if (char === "/" && nextChar === "/") {
            // 单行注释,跳过到行尾
            while (i < content.length && content[i] !== "\n") {
               i++;
            }
            if (i < content.length) {
               result += content[i]; // 保留换行符
            }
         } else if (char === "/" && nextChar === "*") {
            // 多行注释,跳过到 */
            i += 2;
            while (i < content.length - 1) {
               if (content[i] === "*" && content[i + 1] === "/") {
                  i += 2;
                  break;
               }
               i++;
            }
            continue;
         } else {
            result += char;
            escaped = false;
         }
      }
      i++;
   }
   return result;
}
// 写入文件
@@ -148,27 +91,4 @@
export function success(message: string) {
   console.log("\x1B[32m%s\x1B[0m", message);
}
/**
 * 比较两个版本号
 * @param version1 版本号1 (如: "1.2.3")
 * @param version2 版本号2 (如: "1.2.4")
 * @returns 1: version1 > version2, 0: 相等, -1: version1 < version2
 */
export function compareVersion(version1: string, version2: string): number {
   const v1Parts = version1.split(".").map(Number);
   const v2Parts = version2.split(".").map(Number);
   const maxLength = Math.max(v1Parts.length, v2Parts.length);
   for (let i = 0; i < maxLength; i++) {
      const v1Part = v1Parts[i] || 0;
      const v2Part = v2Parts[i] || 0;
      if (v1Part > v2Part) return 1;
      if (v1Part < v2Part) return -1;
   }
   return 0;
}