handle installing frontend packages more gracefully

This commit is contained in:
Khaleel Al-Adhami 2024-11-01 15:28:11 -07:00
parent 2ba62a6d63
commit f8169795f1

View File

@ -930,15 +930,31 @@ def install_frontend_packages(packages: set[str], config: Config):
"""
# unsupported archs(arm and 32bit machines) will use npm anyway. so we dont have to run npm twice
fallback_command = (
get_package_manager()
if not constants.IS_WINDOWS
get_package_manager(on_failure_return_none=True)
if (
not constants.IS_WINDOWS
or constants.IS_WINDOWS
and is_windows_bun_supported()
and not windows_check_onedrive_in_path()
)
else None
)
install_package_manager = (
get_install_package_manager(on_failure_return_none=True) or fallback_command
)
if install_package_manager is None:
raise FileNotFoundError(
"Could not find a package manager to install frontend packages. You may need to run `reflex init`."
)
fallback_command = (
fallback_command if fallback_command is not install_package_manager else None
)
processes.run_process_with_fallback(
[get_install_package_manager(), "install"], # type: ignore
[install_package_manager, "install"], # type: ignore
fallback=fallback_command,
analytics_enabled=True,
show_status_message="Installing base frontend packages",
@ -949,7 +965,7 @@ def install_frontend_packages(packages: set[str], config: Config):
if config.tailwind is not None:
processes.run_process_with_fallback(
[
get_install_package_manager(),
install_package_manager,
"add",
"-d",
constants.Tailwind.VERSION,
@ -965,7 +981,7 @@ def install_frontend_packages(packages: set[str], config: Config):
# Install custom packages defined in frontend_packages
if len(packages) > 0:
processes.run_process_with_fallback(
[get_install_package_manager(), "add", *packages],
[install_package_manager, "add", *packages],
fallback=fallback_command,
analytics_enabled=True,
show_status_message="Installing frontend packages from config and components",