- 包含4个产业方向的前端项目:智能开发、智能制造、大健康、财经商贸 - 已清理node_modules、.yoyo等大文件,项目大小从2.6GB优化至631MB - 配置完善的.gitignore文件 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
139 lines
5.2 KiB
Python
139 lines
5.2 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import re
|
|
import json
|
|
|
|
def fix_multiline_strings_in_js():
|
|
"""修复JS文件中的多行字符串问题"""
|
|
|
|
# 读取文件
|
|
with open('src/mocks/resumeInterviewMock.js', 'r', encoding='utf-8') as f:
|
|
content = f.read()
|
|
|
|
# 查找所有 "original": "..." 和 "modified": "..." 的模式
|
|
# 使用更精确的正则表达式来匹配这些字符串
|
|
|
|
def replace_multiline(match):
|
|
"""将多行字符串转换为转义的单行字符串"""
|
|
key = match.group(1)
|
|
value = match.group(2)
|
|
# 转义字符串中的特殊字符
|
|
escaped_value = json.dumps(value, ensure_ascii=False)
|
|
return f'"{key}": {escaped_value}'
|
|
|
|
# 处理 original 字段
|
|
pattern = r'"(original|modified)": "([\s\S]*?)"(?=,\s*"(?:modified|original)"|,\s*\})'
|
|
|
|
# 分段处理,避免一次性处理整个文件
|
|
lines = content.split('\n')
|
|
result_lines = []
|
|
in_content_block = False
|
|
buffer = []
|
|
|
|
for i, line in enumerate(lines):
|
|
if '"content": {' in line:
|
|
in_content_block = True
|
|
result_lines.append(line)
|
|
elif in_content_block and ('},\n' in line or '},' in line or line.strip() == '},'):
|
|
# 处理content块
|
|
in_content_block = False
|
|
if buffer:
|
|
# 处理buffer中的内容
|
|
block_text = '\n'.join(buffer)
|
|
|
|
# 查找original和modified字段
|
|
if '"original":' in block_text or '"modified":' in block_text:
|
|
# 提取original的值
|
|
original_match = re.search(r'"original":\s*"([\s\S]*?)"(?=,\s*"modified")', block_text)
|
|
modified_match = re.search(r'"modified":\s*"([\s\S]*?)"(?=\s*\})', block_text)
|
|
|
|
if original_match and modified_match:
|
|
original_value = original_match.group(1)
|
|
modified_value = modified_match.group(1)
|
|
|
|
# 转义并重建
|
|
new_block = f' "original": {json.dumps(original_value, ensure_ascii=False)},\n'
|
|
new_block += f' "modified": {json.dumps(modified_value, ensure_ascii=False)}'
|
|
result_lines.append(new_block)
|
|
else:
|
|
result_lines.extend(buffer)
|
|
else:
|
|
result_lines.extend(buffer)
|
|
buffer = []
|
|
result_lines.append(line)
|
|
elif in_content_block:
|
|
buffer.append(line)
|
|
else:
|
|
result_lines.append(line)
|
|
|
|
# 写回文件
|
|
fixed_content = '\n'.join(result_lines)
|
|
with open('src/mocks/resumeInterviewMock.js', 'w', encoding='utf-8') as f:
|
|
f.write(fixed_content)
|
|
|
|
print("✅ 修复完成")
|
|
|
|
def simple_fix():
|
|
"""简单的修复方法:直接从备份文件复制结构,然后用正确格式的数据替换"""
|
|
import json
|
|
|
|
# 加载转换后的数据
|
|
with open('temp_mock_data.js', 'r', encoding='utf-8') as f:
|
|
temp_content = f.read()
|
|
|
|
# 提取industries的JSON部分
|
|
industries_match = re.search(r'const industries = (\[[\s\S]*?\]);', temp_content)
|
|
if industries_match:
|
|
industries_json_str = industries_match.group(1)
|
|
# 解析为Python对象
|
|
industries_data = json.loads(industries_json_str)
|
|
|
|
# 提取resumeTemplates的JSON部分
|
|
templates_match = re.search(r'const resumeTemplates = (\{[\s\S]*?\});', temp_content)
|
|
if templates_match:
|
|
templates_json_str = templates_match.group(1)
|
|
# 解析为Python对象
|
|
templates_data = json.loads(templates_json_str)
|
|
|
|
# 读取原始文件结构
|
|
with open('src/mocks/resumeInterviewMock.js.backup_final', 'r', encoding='utf-8') as f:
|
|
original = f.read()
|
|
|
|
# 保持原始文件的其他部分,只替换数据
|
|
# 找到industries的位置
|
|
industries_start = original.find('const industries = [')
|
|
industries_end = original.find('];', industries_start) + 2
|
|
|
|
# 找到resumeTemplates的位置
|
|
templates_start = original.find('const resumeTemplates = {')
|
|
templates_end = original.find('};', templates_start) + 2
|
|
|
|
# 构建新文件
|
|
new_content = original[:industries_start]
|
|
new_content += f'const industries = {json.dumps(industries_data, ensure_ascii=False, indent=2)};'
|
|
new_content += original[industries_end:templates_start]
|
|
new_content += f'const resumeTemplates = {json.dumps(templates_data, ensure_ascii=False, indent=2)};'
|
|
new_content += original[templates_end:]
|
|
|
|
# 保存
|
|
with open('src/mocks/resumeInterviewMock.js', 'w', encoding='utf-8') as f:
|
|
f.write(new_content)
|
|
|
|
print("✅ 使用简单方法修复完成")
|
|
|
|
def main():
|
|
print("修复多行字符串问题...")
|
|
simple_fix()
|
|
|
|
# 验证
|
|
import subprocess
|
|
result = subprocess.run(['node', '-c', 'src/mocks/resumeInterviewMock.js'],
|
|
capture_output=True, text=True)
|
|
if result.returncode == 0:
|
|
print("✅ 语法检查通过!")
|
|
else:
|
|
print(f"❌ 仍有语法错误:{result.stderr[:200]}")
|
|
|
|
if __name__ == "__main__":
|
|
main() |