#svg #self-contained #interactive #run #generate #tree #datafile

bin+lib dependency-tree-svg

一个从依赖图生成自包含交互式SVG文件的软件包

3个版本

0.1.2 2024年7月10日
0.1.1 2024年7月10日
0.1.0 2024年7月10日

#4 in #self-contained

Download history 269/week @ 2024-07-08 2/week @ 2024-07-15 56/week @ 2024-07-29

每月下载量327

MIT 许可证

13KB
100

dependency-tree-svg

该软件包根据给定的依赖项JSON文件生成自包含SVG文件。

依赖项必须具有以下格式

{
    "root": [
        "packageName1"
    ],
    "packageName1": [
        "dependency1",
        "dependency2"
    ],
    "dependency1": [
        "sub-dependency2"
    ]
}

然后如果您运行

$ cargo run --bin run --features=lexopt -- --datafile data.json --write-to output.svg

您将得到一个SVG文件,在 output.svg 中,其外观如下

此树是交互式的,单击 packageName1,您将获得

此软件包是一个库,以下是接口

fn generate_svg() {
    let file = std::fs::File::open("dependencies.json").unwrap();
    let reader = std::io::BufReader::new(file);
    let input: dependency_tree_svg::Input = serde_json::from_reader(reader)?;
    let box_size = 80;
    let svg = dependency_tree_svg::compile_svg(input, box_size);
    std::fs::write("output.svg", svg).unwrap();
}

前端部分

  1. npm install
  2. npm run build:dev 以启动 esbuild 的监视模式
  3. 在浏览器中打开 assets/main.svg
  4. assets/ 目录中修改代码
  5. 使用 npm run test:node 运行测试

版本发布

要发布

  1. npm run build:release (以获取最小化JS)
  2. cargo publish --allow-dirty (因为生成的JS文件不在git下)

依赖项

~0.7–1.6MB
~36K SLoC