run bun from cached path

This commit is contained in:
Masen Furer 2025-01-09 11:58:08 -08:00
parent 60286590c7
commit 6c4a4a9e79
No known key found for this signature in database
GPG Key ID: B0008AD22B3B3A95
2 changed files with 31 additions and 21 deletions

View File

@ -18,7 +18,7 @@ from reflex import constants
from reflex.config import environment, get_config
from reflex.constants.base import LogLevel
from reflex.utils import console, path_ops
from reflex.utils.prerequisites import get_web_dir
from reflex.utils.prerequisites import get_package_list, get_web_dir
# For uvicorn windows bug fix (#2335)
frontend_process = None
@ -85,14 +85,7 @@ def run_process_and_launch_url(run_command: list[str], backend_present=True):
console.print(
f"DETECT_PACKAGE_CHANGE init {last_hash}, {json.dumps(json.loads(json_file_path.read_text()))}"
)
last_packages = (
processes.new_process(
["bun", "pm", "ls"],
cwd=get_web_dir(),
)
.stdout.read()
.strip()
)
last_packages = get_package_list()
console.print(
f"DETECT_PACKAGE_CHANGE init {last_packages}",
)
@ -145,20 +138,13 @@ def run_process_and_launch_url(run_command: list[str], backend_present=True):
f"DETECT_PACKAGE_CHANGE hit {last_hash} != {new_hash} (new), {new_content}"
)
last_hash = new_hash
new_packages = (
processes.new_process(
["bun", "pm", "ls"],
cwd=get_web_dir(),
)
.stdout.read()
.strip()
)
console.print(
f"DETECT_PACKAGE_CHANGE init {new_packages}",
)
new_packages = get_package_list()
if new_packages != last_packages:
last_packages = new_packages
console.print("Reloading app due to new content...")
console.print(
f"DETECT_PACKAGE_CHANGE init {new_packages}",
)
last_packages = new_packages
kill(process.pid)
process = None
break # for line in process.stdout

View File

@ -267,6 +267,30 @@ def windows_npm_escape_hatch() -> bool:
return environment.REFLEX_USE_NPM.get()
def get_package_list() -> str:
"""Get the list of installed packages in the current environment.
Returns:
The list of user and framework installed packages.
"""
package_manager = get_package_manager()
install_package_manager = get_install_package_manager()
if package_manager == install_package_manager:
# npm
cmd = [install_package_manager, "list"]
else:
# bun
cmd = [install_package_manager, "pm", "ls"]
return (
processes.new_process(
cmd,
cwd=get_web_dir(),
)
.stdout.read()
.strip()
)
def get_app(reload: bool = False) -> ModuleType:
"""Get the app module based on the default config.