MCPcopy Index your code
hub / github.com/343dev/optimizt

github.com/343dev/optimizt @v13.0.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v13.0.0 ↗ · + Follow
54 symbols 206 edges 32 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

@343dev/optimizt

Optimizt logo: OK hand sign with Mona Lisa image between the fingers

NPM Downloads npm Docker

Optimizt is a command-line tool that helps prepare images for the web.

It can compress PNG, JPEG, GIF, and SVG lossy or lossless, and create AVIF and WebP versions for raster images.

Rationale

As frontend developers, we have to care about pictures: compress PNG and JPEG, remove useless parts of SVG, create AVIF and WebP for modern browsers, and so on. One day, we got tired of using a bunch of apps for that, and created one tool that does everything we want.

Usage

Install:

npm install -g @343dev/optimizt

Optimize!

optimizt path/to/picture.jpg

Command Line Flags

  • --avif — create AVIF versions of images.
  • --webp — create WebP versions of images.
  • -f, --force — recreate AVIF and WebP versions even if they already exist.
  • -l, --lossless — optimize losslessly instead of lossily.
  • -v, --verbose — show detailed output (e.g. skipped files).
  • -c, --config — use a custom configuration file instead of the default.
  • -o, --output — write results to the specified directory.
  • -p, --prefix — add prefix to optimized file names.
  • -s, --suffix — add suffix to optimized file names.
  • -V, --version — display the tool version.
  • -h, --help — show help message.

Usage Examples

# optimize a single image
optimizt path/to/picture.jpg

# optimize multiple images losslessly
optimizt --lossless path/to/picture.jpg path/to/another/picture.png

# recursively create AVIF and WebP versions for all images in a directory
optimizt --avif --webp path/to/directory

# recursively optimize JPEG files in the current directory
find . -iname \*.jpg -exec optimizt {} +

Differences Between Lossy and Lossless

Lossy (Default)

Provides the best balance between file size reduction and minimal visual quality loss.

Lossless (--lossless flag)

  • AVIF/WebP: Uses lossless compression.
  • PNG/JPEG/GIF: Maximizes image quality at the expense of larger file sizes.
  • SVG: Settings are identical in both modes.

Configuration

Image processing leverages:

[!NOTE] In Lossless mode for JPEG, Guetzli is used. Repeated optimization may degrade visual quality.

Default settings are defined in .optimiztrc.cjs, which includes all supported parameters. Disable any parameter by setting it to false.

When using --config path/to/.optimiztrc.cjs, the specified configuration file will be used. If no --config is provided, Optimizt searches recursively from the current directory upward for .optimiztrc.cjs. If none is found, defaults are applied.

Troubleshooting

Errors like “spawn guetzli ENOENT”.

Ensure the ignore-scripts npm option is disabled. Details: funbox/optimizt/issues/9.

Development

After cloning the repository, enable Git hooks once:

npm run enable-git-hooks

This configures Git to use the versioned hooks from the .githooks directory.

Docker

Pre-Built Image

# pull latest
docker pull 343dev/optimizt

# pull specific version
docker pull 343dev/optimizt:9.0.2

Manual Build

# clone repository
git clone https://github.com/343dev/optimizt.git
cd optimizt

# build image
docker build --tag 343dev/optimizt .

Alternatively:

# build directly from GitHub
# ignores .dockerignore (see: https://github.com/docker/cli/issues/2827)
docker build --tag 343dev/optimizt https://github.com/343dev/optimizt.git

Run Container

# mount current directory to /src in the container
docker run --rm --volume $(pwd):/src 343dev/optimizt --webp ./image.png

Integrations

Optimizt works seamlessly with:

Articles

Credits

Cute picture for the project was made by Igor Garybaldi.

Other projects

  • 📦 harold — CLI tool that compares frontend project bundle sizes between snapshots
  • 🐳 jailbot — Docker container wrapper with automatic filesystem path mounting
  • 📝 markdown-lint — Markdown code style linter based on Prettier, Remark, and Typograf
  • 🔤 languagetool-node — CLI spell and grammar checker powered by LanguageTool

Core symbols most depended-on inside this repo

colorize
called by 24
lib/colorize.js
buildColor
called by 18
lib/colorize.js
formatBytes
called by 13
lib/format-bytes.js
calculateRatio
called by 7
lib/calculate-ratio.js
log
called by 7
lib/log.js
getRelativePath
called by 7
lib/get-relative-path.js
parseImageMetadata
called by 7
lib/parse-image-metadata.js
logProgress
called by 5
lib/log.js

Shape

Function 54

Languages

TypeScript100%

Modules by API surface

tests/cli.test.js12 symbols
optimize.js8 symbols
lib/log.js6 symbols
convert.js6 symbols
lib/prepare-file-paths.js3 symbols
tests/prepare-file-paths.test.js2 symbols
lib/colorize.js2 symbols
tests/parse-image-metadata.test.js1 symbols
tests/log.test.js1 symbols
lib/show-total.js1 symbols
lib/program-options.js1 symbols
lib/prepare-output-directory-path.js1 symbols

For agents

$ claude mcp add optimizt \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page