Open andrewvy opened 7 years ago
We ended up using something like this where we had multiple Phoenix apps with assets but with a router which didn't have any assets. The router failed to mix ph[oeni]x
when priv/static
did not exist so we ended up with this solution.
This approach can support Phoenix 1.2 or 1.3 apps. Use yarn by ensuring there is a yarn.lock
file in each assets directory.
cd $build_dir
# Phoenix 1.2
mix cmd --app app_a "(yarn install && yarn run deploy) || true"
mix cmd --app app_a mix phoenix.digest
# Phoenix 1.3
mix cmd --app app_b "(cd assets && yarn install && yarn run deploy) || true"
mix cmd --app app_b mix phx.digest
/cc @jonrowe
Since this seems to be the simplest way to achieve this, it'd be nice to add some instructions to the README
What is the status on this ? I would be willing to make this feature happen but I'm not sure where I should start. Any idea ?
A couple of things need to happen,phx.digest
needs to not error in an umbrella context if theres no assets folder, a task needs to be able to exist for installing assets that runs across the umbrella.
Specifically the install_and_cache_deps()
in build.sh also needs to either support multiple assets directories or have a means to be easily disabled: https://github.com/gjaldon/heroku-buildpack-phoenix-static/blob/fa862491d793c4ccb934caa04a8688b92fe0572e/lib/build.sh#L117
So, I run multiple phoenix applications and each have their own assets.
To get around
cd
'ing into all the different applications and running the npm deploy script in each..I just have a custom
compile
script that looks like this:You can run
mix cmd
which will run the command in each of all the child applications.mix phoenix.digest
also does run in all of the phoenix applications as well.I feel like you can use these same commands in a single application, and even in umbrella applications.