Zero-config CLI for converting between YAML and JSON formats. Pass a file, get the converted file. No flags required.
Ensure jyml is available:
# Check if installed
which jyml
# Install globally if needed
npm install -g jyml
# Or use npx for one-off conversions
npx jyml <file>
Requires Node.js 18 or later.
jyml <file> [options]
The CLI auto-detects the input format based on file extension and converts to the opposite format:
| Input Extension | Output Extension |
|---|---|
| ----------------- | ------------------ |
.yaml, .yml | .json |
.json | .yaml |
Output is written to the same directory with the swapped extension.
| Option | Description | Default |
|---|---|---|
| -------- | ------------- | --------- |
-o, --output | Custom output file path | Input file with swapped extension |
--json | Print structured JSON to stdout (no file written) | — |
--indent | Indentation spaces | 2 |
-h, --help | Show help | — |
-V, --version | Show version | — |
# YAML to JSON
jyml config.yaml
# → writes config.json
# JSON to YAML
jyml settings.json
# → writes settings.yaml
jyml docker-compose.yml -o ./output/docker-compose.json
jyml response.json --indent 4
Use --json to get structured output for piping to other tools:
# Get parsed content
jyml workflow.yml --json | jq '.content'
# Extract specific values
jyml .github/workflows/ci.yml --json | jq '.content.jobs'
Convert multiple files using shell patterns:
# Convert all YAML files in a directory
for f in configs/*.yaml; do jyml "$f"; done
# Convert all JSON files
for f in data/*.json; do jyml "$f"; done
Writes converted content to a file, prints progress to stderr:
jyml config.yaml
# stderr: Converting config.yaml → config.json
# Creates: config.json
--json)Prints structured JSON to stdout, no file written:
{
"input": "/path/to/input.yaml",
"format": "json",
"output": "/path/to/input.json",
"content": { ... }
}
| Field | Type | Description |
|---|---|---|
| ------- | ------ | ------------- |
input | string | Absolute path to the source file |
format | string | Output format: "json" or "yaml" |
output | string | Path where the file would be written |
content | object | The parsed and converted data |
| Code | Meaning |
|---|---|
| ------ | --------- |
0 | Success |
1 | Conversion error (invalid YAML/JSON, I/O failure) |
2 | Invalid usage (missing file, bad arguments, unsupported extension) |
Errors are printed to stderr with actionable context:
Error: File not found: config.yaml
Error: Unsupported file extension ".txt". Supported: .yaml, .yml, .json
Error: Invalid YAML: bad indentation of a mapping entry (1:11)
Error: Invalid JSON: Expected property name or '}' in JSON at position 2
When conversion fails, check:
.yaml, .yml, or .jsonConvert specs between formats for different tools:
# Convert OpenAPI spec to JSON for code generators
jyml openapi.yaml
# Convert back to YAML for documentation
jyml openapi.json
Switch config formats based on tool requirements:
# ESLint config to YAML
jyml .eslintrc.json
# Docker Compose to JSON
jyml docker-compose.yml
Parse workflow files for scripting:
# Extract job names from a workflow
jyml .github/workflows/ci.yml --json | jq '.content.jobs | keys'
Convert JSON responses to readable YAML:
curl -s https://api.example.com/data > response.json
jyml response.json --indent 4
cat response.yaml
共 1 个版本