Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

kako-jun/diffx

Repository files navigation

diffx

日本語

CI Crates.io docs.rs License: MIT

Semantic diff tool for structured data (JSON/YAML/TOML/XML/INI/CSV). Ignores key ordering and whitespace, shows only meaningful changes.

Why diffx?

Traditional diff doesn't understand structure:

$ diff config_v1.json config_v2.json
< {
< "name": "myapp",
< "version": "1.0"
< }
> {
> "version": "1.1",
> "name": "myapp"
> }

A simple key reordering shows every line as changed.

diffx shows only semantic changes:

$ diffx config_v1.json config_v2.json
~ version: "1.0" -> "1.1"

Installation

# As CLI tool
cargo install diffx
# As library (Cargo.toml)
[dependencies]
diffx-core = "0.6"

Usage

# Basic
diffx file1.json file2.json
# Output example
~ version: "1.0" -> "1.1"
+ features[0]: "new-feature"
- deprecated: "old-value"

Supported Formats

JSON, YAML, TOML, XML, INI, CSV (auto-detected by extension, use --format to override)

Main Options

--output json|yaml # Machine-readable output
--quiet # Return only exit code (0: same, 1: diff found)
--ignore-keys-regex RE # Ignore keys matching regex
--array-id-key KEY # Identify array elements by KEY for comparison
--epsilon N # Float comparison tolerance
--ignore-case # Case-insensitive comparison
--ignore-whitespace # Ignore whitespace differences
-r, --recursive # Recursive directory comparison

Output Symbols

  • + Added
  • - Removed
  • ~ Modified
  • ! Type changed

CI/CD Usage

# Detect config changes
if ! diffx config/prod.json config/staging.json --quiet; then
 echo "Config has changed"
 diffx config/prod.json config/staging.json --output json > changes.json
fi
# Compare ignoring timestamps and metadata
diffx api_v1.json api_v2.json --ignore-keys-regex "^(timestamp|updated_at)$"

Examples

See diffx-cli/tests/cmd/ for executable examples:

Documentation

License

MIT

About

Semantic diff for structured data (JSON, YAML, TOML, XML, INI, CSV) — compares meaning, not text

Topics

Resources

License

Stars

Watchers

Forks

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /