ThinkR-open / golem

A Framework for Building Robust Shiny Apps
https://thinkr-open.github.io/golem/
Other
915 stars 133 forks source link

Remove golem dependency from golem apps #726

Closed wurli closed 3 years ago

wurli commented 3 years ago

When I create golem apps I often need to bastardise a few functions from the {golem} package itself to allow me to remove {golem} itself as a dependency when I publish the app. This is necessary because {golem} in turn imports some very heavy-weight packages which our servers struggle with.

I would suggest making this the default behaviour, but please correct me if there's a good reason for the current behaviour that I've not seen. Usually the only functions I need to bring over manually are add_resource_path(), activate_js(), favicon(), bundle_resources() and with_golem_options() - not that many. I don't see why these shouldn't simply be included by default in a standalone .R file, allowing for much lighter-weight apps without any hassle.

ColinFay commented 3 years ago

It's on its way.

The idea is to lower the number of dependencies inside golem, so it just depends on a bunch of packages — I think {shiny} & {config} only.

Please see this comment https://github.com/ThinkR-open/golem/issues/597#issuecomment-812459814 for more background. The idea would be to check for dev dependencies at dev time (for example {usethis}), and suggest installing it on the dev machine if it's not there.

As far as I can tell, this would make {golem} very lightweight in terms of dependencies and would make the deployment way faster.

Your .R idea is great but I don't feel it's the safest way to go, even more that it wouldn't allow to safely update {golem} version if ever there are new features in the package :)

I'm closing this right now as it's a duplicate of #597, so that we can track this in one issue only :)

Feel free to drop any comment on #597 if you want to add something.

Cheers, Colin

wurli commented 3 years ago

Thanks for responding - didn't realise this was an open issue already! Thanks for all the work on this package, besides this (minor) thing I've found it a great framework for building shiny apps :)