Hugo Static vs Assets Folders
Published: 2024-06-09 | Updated: 2024-06-10When I first started creating this site in Hugo I made a ton of decisions about where in Hugo’s default folder structure I would store my site assets - things like the favicons, javascript files, and my scss/css files. I made some mistakes. This post is another short one to quickly get you past my self-inflicted points of pain on these matters.
Here’s what I learned in a nutshell:
- If you’re never going to modifiy it in any way before serving it, put it in the
/staticfolder - If you’ll modify it in any way during the build process, put it in the
/assetsfolder
When I ask Hugo to build a site, it resizes images , it transpiles my .scss and .js and .ts files, and it fingerprints / compresses / minimizes everything. The process is called pipelining and it’s what Hugo excells at. Hugo’s pipeline is served from the assets folder. None of the files in /assets which aren’t processed by Hugo during the build process will actually make it into \public during build.
But all of the assets in the /static folder will be included into \public during build.
So here, by way of example is what I generally keep in /assets and /static
-
/assets- images that live in partials
- javascript and typescript source files
.scsssource files
-
/static- distributed script files (
something-something.min.js) - favicons
- SVG files
- distributed script files (