add build-frontend API endpoint
This commit is contained in:
parent
7a71a2147b
commit
20956731ed
|
|
@ -1164,3 +1164,38 @@ async def serve_frontend_paths(path: str):
|
|||
return FileResponse(file_path)
|
||||
# 回退到 index.html (SPA 路由)
|
||||
return FileResponse(FRONTEND_DIR / "index.html")
|
||||
|
||||
|
||||
@app.post("/admin/build-frontend")
|
||||
async def build_frontend(background_tasks: BackgroundTasks):
|
||||
"""构建前端 (仅用于部署)"""
|
||||
import subprocess
|
||||
|
||||
frontend_path = FRONTEND_DIR.parent
|
||||
|
||||
async def run_build():
|
||||
try:
|
||||
result = subprocess.run(
|
||||
["npm", "install"],
|
||||
cwd=str(frontend_path),
|
||||
capture_output=True,
|
||||
text=True,
|
||||
timeout=300
|
||||
)
|
||||
result = subprocess.run(
|
||||
["npm", "run", "build"],
|
||||
cwd=str(frontend_path),
|
||||
capture_output=True,
|
||||
text=True,
|
||||
timeout=300
|
||||
)
|
||||
return result.returncode == 0, result.stdout, result.stderr
|
||||
except Exception as e:
|
||||
return False, "", str(e)
|
||||
|
||||
success, stdout, stderr = await run_build()
|
||||
|
||||
if success:
|
||||
return {"status": "success", "message": "前端构建成功"}
|
||||
else:
|
||||
return {"status": "error", "message": stderr or "构建失败"}
|
||||
|
|
|
|||
Loading…
Reference in New Issue