Skip to content

Commit cf26fa3

Browse files
committed
Enable client-side error console only when running apps locally
1 parent 39d80a5 commit cf26fa3

File tree

3 files changed

+36
-10
lines changed

3 files changed

+36
-10
lines changed

shiny/_app.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,7 @@ def _render_page(self, ui: Tag | TagList, lib_prefix: str) -> RenderedHTML:
420420
ui_res = copy.copy(ui)
421421
# Make sure requirejs, jQuery, and Shiny come before any other dependencies.
422422
# (see require_deps() for a comment about why we even include it)
423-
ui_res.insert(0, [require_deps(), jquery_deps(), shiny_deps()])
423+
ui_res.insert(0, [require_deps(), jquery_deps(), *shiny_deps()])
424424
rendered = HTMLDocument(ui_res).render(lib_prefix=lib_prefix)
425425
self._ensure_web_dependencies(rendered["dependencies"])
426426
return rendered
@@ -431,7 +431,7 @@ def _render_page_from_file(self, file: Path, lib_prefix: str) -> RenderedHTML:
431431

432432
doc = HTMLTextDocument(
433433
page_html,
434-
deps=[require_deps(), jquery_deps(), shiny_deps()],
434+
deps=[require_deps(), jquery_deps(), *shiny_deps()],
435435
deps_replace_pattern='<meta name="shiny-dependency-placeholder" content="">',
436436
)
437437

shiny/_main.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,13 @@ def main() -> None:
143143
help="Launch app browser after app starts, using the Python webbrowser module.",
144144
show_default=True,
145145
)
146+
@click.option(
147+
"--dev-mode/--no-dev-mode",
148+
is_flag=True,
149+
default=True,
150+
help="Dev mode",
151+
show_default=True,
152+
)
146153
@no_example
147154
def run(
148155
app: str | shiny.App,
@@ -159,6 +166,7 @@ def run(
159166
app_dir: str,
160167
factory: bool,
161168
launch_browser: bool,
169+
dev_mode: bool,
162170
**kwargs: object,
163171
) -> None:
164172
reload_includes_list = reload_includes.split(",")
@@ -177,6 +185,7 @@ def run(
177185
app_dir=app_dir,
178186
factory=factory,
179187
launch_browser=launch_browser,
188+
dev_mode=dev_mode,
180189
**kwargs,
181190
)
182191

@@ -196,6 +205,7 @@ def run_app(
196205
app_dir: Optional[str] = ".",
197206
factory: bool = False,
198207
launch_browser: bool = False,
208+
dev_mode: bool = True,
199209
**kwargs: object,
200210
) -> None:
201211
"""
@@ -276,6 +286,8 @@ def run_app(
276286

277287
os.environ["SHINY_HOST"] = host
278288
os.environ["SHINY_PORT"] = str(port)
289+
if dev_mode:
290+
os.environ["SHINY_DEV_MODE"] = "1"
279291

280292
if isinstance(app, str):
281293
# Remove ":app" suffix if present. Normally users would just pass in the

shiny/html_dependencies.py

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,28 @@
1+
import os
2+
13
from htmltools import HTMLDependency
24

35

4-
def shiny_deps() -> HTMLDependency:
5-
return HTMLDependency(
6-
name="shiny",
7-
version="0.0.1",
8-
source={"package": "shiny", "subdir": "www/shared/"},
9-
script={"src": "shiny.js"},
10-
stylesheet={"href": "shiny.min.css"},
11-
)
6+
def shiny_deps() -> list[HTMLDependency]:
7+
deps = [
8+
HTMLDependency(
9+
name="shiny",
10+
version="0.0.1",
11+
source={"package": "shiny", "subdir": "www/shared/"},
12+
script={"src": "shiny.js"},
13+
stylesheet={"href": "shiny.min.css"},
14+
)
15+
]
16+
if os.getenv("SHINY_DEV_MODE") == "1":
17+
deps.append(
18+
HTMLDependency(
19+
"shiny-devmode",
20+
version="0.0.1",
21+
head="<script>window.__SHINY_DEV_MODE__ = true;</script>",
22+
)
23+
)
24+
25+
return deps
1226

1327

1428
def jquery_deps() -> HTMLDependency:

0 commit comments

Comments
 (0)