lovell / avif-cli

Command line utility to convert images to AVIF
Apache License 2.0
165 stars 18 forks source link

When using --output have option to preserve directory structure #8

Open pbowyer opened 2 years ago

pbowyer commented 2 years ago

Thanks for writing this script!

When using

npx avif --input="/path/to/www/assets/**/*.*" --output=/path/to/www/assets-avif --verbose

It would be really nice if there was a built-in way to preserve the input directory structure in the output directory.

We don't want to save the AVIFs to the same folder as the source images as the CMS media browser will show both, but for easy try_files configuration we'd like to mirror the directory structure in the destination. Plus it keeps the folders with a manageable number of images in them.

Example:

/path/to/www/assets/images/foo/bar/baz.jpg => /path/to/www/assets-avif/images/foo/bar/baz.avif

(Having an option to append .avif would also be cool, to mirror how our bash script has been doing it. So the output file name is baz.jpg.avif. That way the try_files usage stays simple.

lovell commented 2 years ago

Hi Peter, these are great ideas, very happy to accept a PR for either/both.

The use of input structure to determine output structure should probably be the default behaviour anyway, and therefore a semver major bump.

Making the use of try_files easier is a nice touch but should be opt-in, perhaps via something like an --append-extension or more explicit --try-files option or similar.