Move frontend build check from setup.py to runtime server startup

• Remove complex setup.py build checks
• Add runtime frontend validation
• Update install docs with uv/bun steps
• Simplify setup.py to minimal form
• Check webui before server starts
This commit is contained in:
yangdx 2025-10-14 02:21:26 +08:00
parent 6c05f0f837
commit ee45ab5104
4 changed files with 54 additions and 76 deletions

View file

@ -21,15 +21,24 @@ pip install "lightrag-hku[api]"
* 从源代码安装 * 从源代码安装
```bash ```bash
# 克隆仓库 # Clone the repository
git clone https://github.com/HKUDS/lightrag.git git clone https://github.com/HKUDS/lightrag.git
# 切换到仓库目录 # Change to the repository directory
cd lightrag cd lightrag
# 如有必要,创建 Python 虚拟环境 # Create a Python virtual environment
# 以可编辑模式安装并支持 API uv venv --seed --python 3.12
source .venv/bin/acivate
# Install in editable mode with API support
pip install -e ".[api]" pip install -e ".[api]"
# Build front-end artifacts
cd lightrag_webui
bun install --frozen-lockfile --production
bun run build --emptyOutDir
cd ..
``` ```
### 启动 LightRAG 服务器前的准备 ### 启动 LightRAG 服务器前的准备

View file

@ -27,9 +27,18 @@ git clone https://github.com/HKUDS/lightrag.git
# Change to the repository directory # Change to the repository directory
cd lightrag cd lightrag
# create a Python virtual environment if necessary # Create a Python virtual environment
uv venv --seed --python 3.12
source .venv/bin/acivate
# Install in editable mode with API support # Install in editable mode with API support
pip install -e ".[api]" pip install -e ".[api]"
# Build front-end artifacts
cd lightrag_webui
bun install --frozen-lockfile --production
bun run build --emptyOutDir
cd ..
``` ```
### Before Starting LightRAG Server ### Before Starting LightRAG Server

View file

@ -145,7 +145,35 @@ class LLMConfigCache:
self.ollama_embedding_options = {} self.ollama_embedding_options = {}
def check_frontend_build():
"""Check if frontend is built before starting server"""
webui_dir = Path(__file__).parent / "webui"
index_html = webui_dir / "index.html"
if not index_html.exists():
ASCIIColors.red("\n" + "=" * 80)
ASCIIColors.red("ERROR: Frontend Not Built")
ASCIIColors.red("=" * 80)
ASCIIColors.yellow("The WebUI frontend has not been built yet.")
ASCIIColors.yellow(
"Please build the frontend code first using the following commands:\n"
)
ASCIIColors.cyan(" cd lightrag_webui")
ASCIIColors.cyan(" bun install")
ASCIIColors.cyan(" bun run build")
ASCIIColors.cyan(" cd ..")
ASCIIColors.yellow("\nThen restart the service.\n")
ASCIIColors.cyan(
"Note: Make sure you have Bun installed. Visit https://bun.sh for installation."
)
ASCIIColors.red("=" * 80 + "\n")
sys.exit(1) # Exit immediately
def create_app(args): def create_app(args):
# Check frontend build first
check_frontend_build()
# Setup logging # Setup logging
logger.setLevel(args.log_level) logger.setLevel(args.log_level)
set_verbose_debug(args.verbose) set_verbose_debug(args.verbose)

View file

@ -1,74 +1,6 @@
"""Minimal setup.py for backward compatibility with frontend build check""" # Minimal setup.py for backward compatibility
# Primary configuration is now in pyproject.toml
from pathlib import Path
from setuptools import setup from setuptools import setup
from setuptools.command.build_py import build_py
import sys
setup()
def check_webui_exists():
"""Check if WebUI has been built"""
webui_index = Path("lightrag/api/webui/index.html")
return webui_index.exists()
class BuildPyCommand(build_py):
"""Check WebUI build status before packaging/installation"""
def run(self):
# Check if running in development mode
is_develop = any(arg in sys.argv for arg in ["develop", "egg_info"])
is_editable = "--editable" in sys.argv or "-e" in sys.argv
if is_develop or is_editable:
# Development mode: friendly reminder
if not check_webui_exists():
print("""
Development Mode - WebUI not built yet
You're installing in development mode. You can build the frontend later:
cd lightrag_webui
bun install
bun run build
The changes will take effect immediately (symlink mode).
""")
else:
# Normal installation/packaging mode: frontend build required
if not check_webui_exists():
print("""
ERROR: WebUI Not Built
For normal installation (pip install .), you must build the frontend first:
cd lightrag_webui
bun install
bun run build
cd ..
Then run the installation again.
💡 TIP: For development, use editable mode instead:
pip install -e ".[api]"
This allows you to build the frontend after installation.
""")
sys.exit(1)
print("✅ Proceeding with package build...")
build_py.run(self)
setup(
cmdclass={
"build_py": BuildPyCommand,
}
)