Fl4m3Ph03n1x
Add folder to mix assets.deploy
Background
I have a project that has a folder for image it uses. I call this folder images.
Issue
Usually when I do mix assets.deploy from the root of my project everything is compiled and phoenix puts the images it needs inside priv/static/.
However, these images are not being used in templates nor in renders. They are being used by elixir-desktop. So because of this when I use mix assets.deploy these images are not bundled together with everything else.
Question
I have read the introduction to deployment guide: Introduction to Deployment — Phoenix v1.8.3
But it does not address my issue. Is there a configuration I can change to add my images folders? I believe this would have to go into mix.exs or something amongst those lines.
Marked As Solved
LostKobrakai
It used to, but hasn’t been since 1.6 – based on the generated setup of a fresh phoenix install.
Also Liked
derpycoder
As @LostKobrakai pointed out, mix assets.deploy just processes js/css from assets folder.
Rest of the images, svgs, icons, robots.txt, canary.txt, ads.txt, favicon, etc, you need to place them directly priv/static folder.
I guess, it just minifies, compresses and generates file hash on js/css files.
However the images are compressed by us, so they are directly placed in priv/static folder and the mix assets.deploy works on those images in place:
Excerpt from Introduction to Deployment:
This step is required only if you have compilable assets like JavaScript and stylesheets. By default, Phoenix uses
esbuildbut everything is encapsulated in a singlemix assets.deploytask defined in yourmix.exs.
And that is it! The Mix task by default builds the assets and then generates digests with a cache manifest file so Phoenix can quickly serve assets in production.
P.S. I fumbled in the beginning as well, but I just saw existing projects by other people and figured out that you just leave images and such in priv/static folder.
derpycoder
Yup, it’s a good practice.
Let me find an official documentation.
As @LostKobrakai mentioned, it’s a new way of doing it after webpack was removed!
Note running
mix phx.digestwill create digested files for all of the assets inpriv/static, so your images and fonts are still cache-busted.
https://hexdocs.pm/phoenix/1.6.1/asset_management.html#images-fonts-and-external-files








