Convert JSON objects to YAML with automatic anchors and aliases, enabling efficient and readable YAML files by reusing common structures through references.
- Automatic Anchors & Aliases: Detects and manages duplicate objects, creating YAML anchors and aliases to reduce redundancy.
- Deep Object Support: Handles complex nested JSON structures, including arrays and objects.
- Customizable Anchor Naming: Generates meaningful anchor names based on the object's path.
- Simple Integration: Easy to use with minimal setup.
Install the package via npm:
npm install json-to-yaml-with-refs
Or using yarn:
yarn add json-to-yaml-with-refs
Import the convertToYamlWithRefs
function and use it to convert your JSON objects to YAML with references.
import { convertToYamlWithRefs } from "json-to-yaml-with-refs";
const jsonObject = {
user: {
name: "Alice",
address: {
street: "123 Main St",
city: "Wonderland",
},
},
admin: {
name: "Bob",
address: {
street: "123 Main St",
city: "Wonderland",
},
},
};
const yamlString = convertToYamlWithRefs(jsonObject);
console.log(yamlString);
Output:
user: &user_address
name: Alice
address:
street: 123 Main St
city: Wonderland
admin:
name: Bob
address: *user_address
Converts a JSON object to a YAML string with anchors and aliases for duplicate objects.
-
jsonObject
(Record<string, any>): The JSON object to convert.
-
string
: The resulting YAML string with references.
const data = {
project: {
name: "Example",
settings: {
theme: "dark",
layout: "grid",
},
},
backup: {
settings: {
theme: "dark",
layout: "grid",
},
},
};
const yaml = convertToYamlWithRefs(data);
console.log(yaml);
Output:
project:
settings: &project_settings
theme: dark
layout: grid
backup:
settings: *project_settings
const data = {
list1: [
{ id: 1, value: "A" },
{ id: 2, value: "B" },
],
list2: [
{ id: 1, value: "A" },
{ id: 3, value: "C" },
],
};
const yaml = convertToYamlWithRefs(data);
console.log(yaml);
Output:
list1:
- id: 1
value: A
- id: 2
value: B
list2:
- *list1_0
- id: 3
value: C
Contributions are welcome! Please open an issue or submit a pull request for any bugs, features, or improvements.
- Fork the repository
- Create your feature branch (
git checkout -b feature/YourFeature
) - Commit your changes (
git commit -m 'Add some feature'
) - Push to the branch (
git push origin feature/YourFeature
) - Open a pull request
This project is licensed under the MIT License.
Feel free to customize this README to better fit your project's specific details and requirements.