minijson ~master
Minify JSON files
To use this package, run the following command in your project's root directory:
Manual usage
Put the following dependency into your project's dependences section:
minijson
Minify JSON files blazing fast, removing comments/whitespace.
Uses D, C, and AVX2 and SSE4_1 SIMD. 4180 times faster than jsonminify!
Installation
- Npm (Nodejs)
npm install @aminya/minijson
- Dub (D)
git submodule update --init --recursive
dub build --config=library --build=release-nobounds --compiler=ldc2
# or
dub build --config=executable --build=release-nobounds --compiler=ldc2
- Download Native Binaries from https://github.com/aminya/minijson/releases/latest
CLI Usage
# Minify the specified files
minijson ./dist/**/*.json ./build/a.json
# Minify the specified files (supports comments)
minijson --comment file1_with_comment.json file2_with_comment.json
# Minify the specified json string
minijson --str '{"some_json": "string_here"}'
# Minify the specified json string (supports comments)
minijson --comment --str '{"some_json": "string_here"} //comment'
> minijson --help
Usage: minijson [--files FILES ...] [--comment] [--str STR ...] [--file FILE ...] [-h]
minijson: minify json files with support for comments
Optional arguments:
--files FILES ...
--comment
--str STR ...
--file FILE ...
-h, --help Show this help message and exit
Node API
import { minifyFiles, minifyString } from "minijson"
// minify the files in-place and in parallel
await minifyFiles(["file1.json", "file2.json"])
// supports comments by passing true as the second argument
await minifyFiles(["file1_with_comment.json", "file2_with_comment.json"], true)
// minify the given string
const minifiedString = minifyString(`{"some_json": "here"}`)
// supports comments by passing true as the second argument
const minifiedString2 = minifyString(`{"some_json": "here"}//comment`, true)
Note: in the Nodejs API, prefer minifyFiles
over other functions, as it minifies the files in parallel with the least amount of resources.
D API
import minijson: minifyString, minifyFiles;
// minify the given string
const minifiedString = minifyString(`{"some_json": "here"}`);
// supports comments by passing true as the second argument
const minifiedString2 = minifyString(`{"some_json": "here"}//comment`, true);
// minify the files in-place and in parallel
minifyFiles(["file1.json", "file2.json"]);
// supports comments by passing true as the second argument
minifyFiles(["file1.json", "file2.json"], true);
Benchmarks
On AMD Ryzen 7 4800H:
- minifyString: minijson is 4178 times faster than jsonMinify
- minifyFiles: minijson is 1894 times faster than jsonMinify.
❯ .\dist\minijson-benchmark.exe --benchmark-minifyString --benchmark-minifyFiles
Benchmark minifyString
14 ms
Benchmark minifyFiles
31 ms
❯ node .\benchmark\js-benchmark.mjs
Benchmark minifyString
58.502 seconds
Benchmark minifyFiles
58.703 seconds
Contributing
You would need to install the ldc compiler for the D programming language
curl -fsS https://dlang.org/install.sh | bash -s ldc
After installation, it will print a message about activating it. Something like source activate_ldc.sh
.
After running the activation command, clone the repository:
git clone --recurse-submodules https://github.com/aminya/minijson
cd minijson
Then build with:
pnpm install
pnpm build.node
License
The project is licensed under MIT. It was inspired by fkei/JSON.minify.
- Registered by Amin Yahyaabadi
- ~master released 2 months ago
- aminya/minijson
- MIT
- Copyright © 2021, Amin Yahyaabadi
- Authors:
- Dependencies:
- despacer, argparse, automem, d-glob
- Versions:
-
1.1.0 2024-Sep-10 1.0.3 2024-Sep-07 1.0.2 2024-Sep-07 1.0.1 2024-Sep-07 1.0.0 2024-Sep-07 - Download Stats:
-
-
0 downloads today
-
0 downloads this week
-
0 downloads this month
-
24 downloads total
-
- Score:
- 0.0
- Short URL:
- minijson.dub.pm