WiP: in prod mode, export frontend as static files
This commit is contained in:
parent
1e9ccecea0
commit
40ed16a765
@ -212,6 +212,13 @@ class App(Base):
|
|||||||
# Set up the admin dash.
|
# Set up the admin dash.
|
||||||
self._setup_admin_dash()
|
self._setup_admin_dash()
|
||||||
|
|
||||||
|
if os.environ.get(constants.ENV_MODE_ENV_VAR) == constants.Env.PROD.value:
|
||||||
|
static_dir = constants.Dirs.WEB_STATIC
|
||||||
|
if os.path.exists(static_dir):
|
||||||
|
self.api.mount(
|
||||||
|
"/", StaticFiles(directory=static_dir, html=True), name="frontend"
|
||||||
|
)
|
||||||
|
|
||||||
def _enable_state(self) -> None:
|
def _enable_state(self) -> None:
|
||||||
"""Enable state for the app."""
|
"""Enable state for the app."""
|
||||||
if not self.state:
|
if not self.state:
|
||||||
|
@ -132,6 +132,7 @@ def _run(
|
|||||||
backend_port: str = str(config.backend_port),
|
backend_port: str = str(config.backend_port),
|
||||||
backend_host: str = config.backend_host,
|
backend_host: str = config.backend_host,
|
||||||
loglevel: constants.LogLevel = config.loglevel,
|
loglevel: constants.LogLevel = config.loglevel,
|
||||||
|
export: bool = False,
|
||||||
):
|
):
|
||||||
"""Run the app in the given directory."""
|
"""Run the app in the given directory."""
|
||||||
from reflex.utils import build, exec, prerequisites, processes
|
from reflex.utils import build, exec, prerequisites, processes
|
||||||
@ -179,7 +180,7 @@ def _run(
|
|||||||
|
|
||||||
if frontend:
|
if frontend:
|
||||||
# Get the app module.
|
# Get the app module.
|
||||||
prerequisites.get_compiled_app()
|
prerequisites.get_compiled_app(export=export and env == constants.Env.PROD)
|
||||||
|
|
||||||
# Warn if schema is not up to date.
|
# Warn if schema is not up to date.
|
||||||
prerequisites.check_schema_up_to_date()
|
prerequisites.check_schema_up_to_date()
|
||||||
@ -212,7 +213,11 @@ def _run(
|
|||||||
# Run the frontend on a separate thread.
|
# Run the frontend on a separate thread.
|
||||||
if frontend:
|
if frontend:
|
||||||
setup_frontend(Path.cwd())
|
setup_frontend(Path.cwd())
|
||||||
commands.append((frontend_cmd, Path.cwd(), frontend_port, backend))
|
if export and env == constants.Env.PROD:
|
||||||
|
# In prod mode, export the frontend and serve it via static files.
|
||||||
|
build.export(backend=False, frontend=True, zip=False)
|
||||||
|
else:
|
||||||
|
commands.append((frontend_cmd, Path.cwd(), frontend_port, backend))
|
||||||
|
|
||||||
# In prod mode, run the backend on a separate thread.
|
# In prod mode, run the backend on a separate thread.
|
||||||
if backend and env == constants.Env.PROD:
|
if backend and env == constants.Env.PROD:
|
||||||
@ -251,9 +256,21 @@ def run(
|
|||||||
loglevel: constants.LogLevel = typer.Option(
|
loglevel: constants.LogLevel = typer.Option(
|
||||||
config.loglevel, help="The log level to use."
|
config.loglevel, help="The log level to use."
|
||||||
),
|
),
|
||||||
|
export: bool = typer.Option(
|
||||||
|
False, help="Export the frontend first in production mode."
|
||||||
|
),
|
||||||
):
|
):
|
||||||
"""Run the app in the current directory."""
|
"""Run the app in the current directory."""
|
||||||
_run(env, frontend, backend, frontend_port, backend_port, backend_host, loglevel)
|
_run(
|
||||||
|
env,
|
||||||
|
frontend,
|
||||||
|
backend,
|
||||||
|
frontend_port,
|
||||||
|
backend_port,
|
||||||
|
backend_host,
|
||||||
|
loglevel,
|
||||||
|
export,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@cli.command()
|
@cli.command()
|
||||||
|
Loading…
Reference in New Issue
Block a user