nddcoder / diagram-as-code

该软件包最新版本(dev-master)的许可证信息不可用。

dev-master 2022-07-07 04:28 UTC

This package is auto-updated.

Last update: 2024-09-07 09:08:35 UTC


README

安装

composer require nddcoder/diagram-as-code

使用

创建一个 demo.php 文件并返回 Diagram 实例

<?php

use Nddcoder\Dac\Base\Cluster;
use Nddcoder\Dac\Base\Diagram;
use Nddcoder\Dac\Base\Style\Color;
use Nddcoder\Dac\Base\Style\EdgeStyle;
use Nddcoder\Dac\Base\Style\Style;
use Nddcoder\Dac\Diagram\Aws\Compute\Ec2;
use Nddcoder\Dac\Diagram\Onprem\Database\Mysql;
use Nddcoder\Dac\Diagram\Onprem\Queue\Kafka;

return Diagram::create('G', 'Demo Diagram As Code')
    ->direction(Style::DIR_LR)
    ->append(
        Cluster::create('kafka', 'Kafka Cluster')
            ->append($kafka = Kafka::create('kafka', 'Kafka'))
    )
    ->append(
        Cluster::create('event_driven', 'Event Driven')
            ->append($consumer = Ec2::create('consumer', 'Consumer'))
    )
    ->append($database = Mysql::create('mysql', 'Mysql'))
    ->connect($kafka, $consumer, EdgeStyle::create()->style(Style::BOLD)->color(Color::BROWN))
    ->connect($consumer, $database, EdgeStyle::create()->style(Style::BOLD)->color(Color::DARKGREEN)->label('WRITE'));

运行 dac 命令来构建 dot 配置

vendor/bin/dac demo.php

Dot 配置输出

digraph G {
    label="Demo Diagram As Code";
    node [shape=box, style=rounded, fixedsize=true, width="1.4", height="1.4", labelloc=b, imagescale=true, fontname="Sans-Serif", fontsize="13", fontcolor="#2D3436"];
    edge [color="#7B8894", fontcolor="#2D3436", fontname="Sans-Serif", fontsize="13"];
    graph [pad="0.5", splines=ortho, nodesep="1.2", ranksep="1.2", fontname="Sans-Serif", fontsize="15", fontcolor="#2D3436"];
    rankdir=LR;
    subgraph cluster_kafka {
        label="Kafka Cluster";
        graph [pad="1", shape=box, style=rounded, labeljust=l, pencolor="#AEB6BE", fontname="Sans-Serif", fontsize="12", bgcolor="#E5F5FD"];
        kafka [label=Kafka, shape=none, height="2", image="resources/onprem/queue/kafka.png"];
    }
    subgraph cluster_event_driven {
        label="Event Driven";
        graph [pad="1", shape=box, style=rounded, labeljust=l, pencolor="#AEB6BE", fontname="Sans-Serif", fontsize="12", bgcolor="#E5F5FD"];
        consumer [label=Consumer, shape=none, height="2", image="resources/aws/compute/ec2.png"];
    }
    mysql [label=Mysql, shape=none, height="2", image="resources/onprem/database/mysql.png"];
    kafka -> consumer [style=bold, color=brown];
    consumer -> mysql [style=bold, color=darkgreen, xlabel=WRITE];
}

生成 PNG 文件

使用 Docker

vendor/bin/dac --root=/dot/vendor/nddcoder/diagram-as-code demo.php | docker run --rm -i -v $(pwd):/dot nshine/dot > demo.png

使用 dot 命令从 graphviz

vendor/bin/dac demo.php | dot -Tpng > demo.png

PNG 输出

Demo Diagram As Code

合并多个文件

如果您想合并多个文件,可以使用 --all 选项

以下目录结构示例

projects/
  project-a/
    diagram.php
  project-b/
    .diagram/
      diagram.php
  ...
  vendor
vendor/bin/dac --all .

该命令将在所有子文件夹中查找 diagram.php.diagram/diagram.php 文件

如果您想设置输出图表的名称,可以使用 --name 选项

vendor/bin/dac --all --name=demo .

示例