code icon Code

JSON to YAML

Convert JSON file to YAML format

Source Code

import fs from "fs";
import path from "path";

import YAML from "yaml";

const [inputPath, outputPath] = process.argv.slice(2);

if (!inputPath || !outputPath) {
  console.error("Usage: inputPath outputPath");
  process.exit(1);
}

try {
  console.log(`Reading ${inputPath}...`);
  const raw = fs.readFileSync(inputPath, "utf-8");
  const data = JSON.parse(raw);

  console.log(`Converting to YAML...`);
  const yaml = YAML.stringify(data, {
    indent: 2,
    lineWidth: 120,
  });

  // Ensure output directory exists
  const dir = path.dirname(outputPath);
  if (dir && dir !== ".") {
    fs.mkdirSync(dir, { recursive: true });
  }

  fs.writeFileSync(outputPath, yaml);

  const lineCount = yaml.split("\n").length;
  const isArray = Array.isArray(data);
  const itemCount = isArray ? data.length : Object.keys(data).length;

  console.log(`\nāœ“ Converted JSON to YAML`);
  console.log(`  Type: ${isArray ? "array" : "object"}`);
  console.log(`  ${isArray ? "Items" : "Keys"}: ${itemCount}`);
  console.log(`  Output lines: ${lineCount}`);
  console.log(`  Written to: ${outputPath}`);

  console.log(
    JSON.stringify({
      success: true,
      inputPath,
      outputPath,
      isArray,
      itemCount,
      lineCount,
    })
  );
} catch (error) {
  console.error("Error:", error.message);
  process.exit(1);
}