Skip to content
This repository has been archived by the owner on Dec 12, 2022. It is now read-only.

ts-graphviz/node

Repository files navigation


This project has been merged into ts-graphviz.


NodeCI npm version License: MIT PRs Welcome tested with jest code style: prettier All Contributors

@ts-graphviz/node

Graphviz adapter for Node.js.

Installation

# yarn
yarn add @ts-graphviz/node
# or npm
npm install @ts-graphviz/node

Usage

High level API

exportToFile function

Export the file by giving a dot.

const dot = 'digraph g { a -> b [label = "Hello World"] }';

await exportToFile(dot, {
  format: "png",
  output: path.resolve(__dirname, "./example.png"),
});

Note: Currently supported formats are png, svg, json, jpg, pdf, xdot, plain, and dot_json.

Other formats will be added if requested, so please give me a PR or issue.

exportToBuffer function

Returns the Graphviz output result as a buffer.

const dot = 'digraph g { a -> b [label = "Hello World"] }';

const imageBuffer = await exportToBuffer(dot, {
  format: "png",
});

ts-graphviz integration

In the high-level API, you can also specify RootCluster such as Digraph or Graph of ts-graphviz as an argument and render directly.

import path from "path";
import { digraph, attribute } from "ts-graphviz";
import { exportToFile } from "@ts-graphviz/node";

const G = digraph("G", (g) => {
  const a = g.node("aa");
  const b = g.node("bb");
  const c = g.node("cc");
  g.edge([a, b, c], {
    [attribute.color]: "red",
  });
  g.subgraph("A", (A) => {
    const Aa = A.node("Aaa", {
      [attribute.color]: "pink",
    });
    const Ab = A.node("Abb", {
      [attribute.color]: "violet",
    });
    const Ac = A.node("Acc");
    A.edge([Aa.port({ compass: "c" }), Ab, Ac, "E"], {
      [attribute.color]: "red",
    });
  });
});

await exportToFile(G, {
  format: "svg",
  output: path.resolve(__dirname, "./callback.svg"),
});

Low level API

executeDot function

A low-level API for wrappers for dot commands provided by Graphviz.

See Also

Graphviz-dot Test and Integration

Contributors

Thanks goes to these wonderful people (emoji key):


Yuki Yamazaki

⚠️ 💻 🤔

Artem

🐛

This project follows the all-contributors specification. Contributions of any kind welcome!

License

This software is released under the MIT License, see LICENSE.