Skip to main content
Browse documentation

Troubleshooting

Troubleshoot ImageForge CLI

Diagnose common failures without editing generated metadata by hand.

Check mode fails

Use the effective-option command printed in the failure output after reviewing shell quoting for your terminal, inspect the generated diff, and rerun --check. Build and check commands must use identical formats, quality, widths, filters, and output directories.

A source was deleted

Published version 0.1.10 rewrites the manifest and cache to current empty state after the final source is deleted. Review and remove orphaned derivative files explicitly; ImageForge does not delete them automatically.

Next.js still transforms the image

Confirm src points to the generated WebP/AVIF path. Add unoptimized or an equivalent custom loader; otherwise next/image can send the already-generated file through its runtime optimizer.

Output collision

Rename colliding sources or choose a disjoint output directory. Collision checks are case-insensitive to keep behavior portable across filesystems.

Sharp cannot install or load

ImageForge depends on Sharp's native binaries. Confirm Node.js 20 or newer, the target platform support, and that the package manager was allowed to install required native artifacts. Reproduce from a clean frozen install before changing image options.

Permission or overwrite failure

Confirm the process can read the input tree and write the manifest, cache, output directory, and derivative parents. Do not bypass an existing-output warning until you have identified which source owns the target; use --force-overwrite only after that review.

Unsupported or animated input

Published version 0.1.10 discovers jpg, jpeg, png, gif, tiff, and tif sources. WebP and AVIF are output formats, not source inputs. GIF handling is static and uses the first frame, so use a different workflow when animation must be preserved.

Large catalog or memory pressure

Lower --concurrency, narrow discovery with include/exclude globs, or process bounded directories separately. Keep each width set intentional because every effective width and format adds derivative work.

imageforge ./public/images --concurrency 2 --include '**/*.jpg' --include '**/*.png'

A requested width is missing

Widths are source-bounded targets, not guaranteed output dimensions. ImageForge filters candidates that would upscale the source, caps each run at 16 unique widths, and records the effective widths in imageforge.json.