I have a project that has a folder for image it uses. I call this folder
Usually when I do
mix assets.deploy from the root of my project everything is compiled and phoenix puts the images it needs inside
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.
I have read the introduction to deployment guide: Introduction to Deployment — Phoenix v1.6.15
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.
You’d need to be more concrete what
assets.deploy is setup to do in your application. By default on a new phoenix app with esbuild it’ll only handle js/css and no images in the first place.
As @LostKobrakai pointed out,
mix assets.deploy just processes js/css from
Rest of the images, svgs, icons, robots.txt, canary.txt, ads.txt, favicon, etc, you need to place them directly
I guess, it just minifies, compresses and generates file hash on
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:
esbuild but everything is encapsulated in a single
mix assets.deploy task defined in your
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
But isn’t the
priv/static folder automatically generated?
Am I meant to add my images/static files there ?(i.e. is this a good practice?)
It used to, but hasn’t been since 1.6 – based on the generated setup of a fresh phoenix install.
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!
mix phx.digestwill create digested files for all of the assets in
priv/static , so your images and fonts are still cache-busted.