Skip to main content

VexyFormi

Documentation: https://vexy.dev/vexy-formi/

Fast code formatting and minification using the best available tools.

Features

  • 🔥 Blazing Fast: Uses fastest available tools (esbuild, swc, biome, ruff)
  • 🛡️ Safe: Atomic operations with automatic backups
  • 🎯 Smart: Automatic tool detection and fallbacks
  • 📦 Simple: Zero-config operation with sensible defaults
  • 🌐 Universal: Supports JS, TS, CSS, HTML, Python, JSON, YAML, TOML, Markdown

Quick Start

# Install
pip install vexy-formi

# Install all required tools automatically
vfor install

# Minify current directory
vfor mini

# Format Python files
vfor fmt --verbose src/

# Show available tools
vfor tools

# Update all tools to latest versions
vfor update

# Use as Python package
python -c "import vexy_formi; vexy_formi.minify('src/')"

Supported Tools

  • JavaScript/TypeScript: esbuild, swc, terser, biome, prettier
  • CSS/SCSS: biome, lightningcss, prettier
  • Python: ruff, black
  • HTML: html-minifier-terser, prettier
  • JSON: biome, jq, prettier
  • TOML: taplo, dprint
  • YAML: prettier, yq
  • Markdown: dprint, prettier

Configuration

Set preferences via environment variables:

  • VFOR_PREFERRED_JS_TOOL=esbuild
  • VFOR_PREFERRED_CSS_TOOL=biome
  • VFOR_PREFERRED_PYTHON_TOOL=ruff
  • VFOR_MAX_WORKERS=8

Or create .vfor.json in your project:

{
    "preferred_js_tool": "esbuild",
    "preferred_css_tool": "biome", 
    "max_workers": 4
}

CLI Usage

# Minify files
vfor mini                    # Current directory  
vfor mini src/              # Specific directory
vfor mini --verbose src/    # Show detailed output
vfor mini --no-backup src/  # Skip backups

# Format files
vfor fmt                     # Current directory
vfor fmt --recursive src/    # Process recursively  
vfor fmt --exclude "*.min.*" # Exclude patterns

# Tool management
vfor install                 # Install all required tools
vfor update                  # Update tools to latest versions
vfor tools                   # Show available tools
vfor cleanup                 # Clean backup files

Python API

import vexy_formi

# Simple API
result = vexy_formi.minify('src/')
result = vexy_formi.format('src/', recursive=True, exclude=['*.test.*'])

# Advanced usage
from vexy_formi import FileProcessor

processor = FileProcessor()
result = processor.minify_files(
    Path('src/'), 
    recursive=True,
    max_workers=8,
    create_backup=True
)

print(f"Processed {result.total_files} files")
print(f"Size reduction: {result.total_size_reduction_percent:.1f}%")

Development

# Clone repository
git clone https://github.com/vexyart/vexy-formi.git
cd vexy-formi

# Install dependencies  
pip install -e .[dev,test]

# Run CLI directly
./vfor mini examples/

# Run tests
pytest

# Format code
ruff format src/

License

MIT License

Metadata

Release files for vexy-formi 1.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vexy-formi 1.0.5
File Size Uploaded Provenance Actions
vexy_formi-1.0.5.tar.gz 68.7 kB Without provenance Details for vexy_formi-1.0.5.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for vexy-formi 1.0.5
File Interpreter ABI Platform Actions
vexy_formi-1.0.5-py3-none-any.whl Python 3 none any Details for vexy_formi-1.0.5-py3-none-any.whl

Total release size: 117.1 kB

Release files / vexy_formi-1.0.5.tar.gz

Download URL vexy_formi-1.0.5.tar.gz
Size 68.7 kB
Tags Source
SHA-256 checksum
How to use checksums
b01a2f6abe9fdcb307662970b13dfc3cbaf5ecebfa4c7ed8478d2a6fa3cb52d2
BLAKE2b-256 checksum
How to use checksums
0daf1bda6ed32ff9b56e000095cc12f8100f9c7e6b930e49abd877272d62aa2a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / vexy_formi-1.0.5-py3-none-any.whl

Download URL vexy_formi-1.0.5-py3-none-any.whl
Size 48.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5c6065b2fe7848c15d3e2ac30f90ddd601fd3d6cc48da95d45681f6dede71a6b
BLAKE2b-256 checksum
How to use checksums
1707f7019513777a8f5fb12c4a711f45a498cdd4acc2cdc0e5205de364284ac0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for vexy-formi 1.0.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.5 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page