Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/emyann/prisma-uml
A CLI to transform a Prisma schema to a PlantUML Entity RelationShip Diagram
https://github.com/emyann/prisma-uml
Last synced: about 11 hours ago
JSON representation
A CLI to transform a Prisma schema to a PlantUML Entity RelationShip Diagram
- Host: GitHub
- URL: https://github.com/emyann/prisma-uml
- Owner: emyann
- Created: 2020-04-21T18:42:57.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-01-05T14:47:15.000Z (about 1 year ago)
- Last Synced: 2024-04-15T01:15:42.518Z (9 months ago)
- Language: TypeScript
- Homepage:
- Size: 1.51 MB
- Stars: 112
- Watchers: 3
- Forks: 9
- Open Issues: 34
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-prisma - prisma-uml
- awesome-list - prisma-uml
README
Welcome to prisma-uml 👋
> A CLI to transform a Prisma schema to a PlantUML Entity RelationShip Diagram
[![npm](https://img.shields.io/npm/v/prisma-uml.svg?style=for-the-badge)](https://www.npmjs.com/package/prisma-uml) [![npm](https://img.shields.io/npm/dy/prisma-uml.svg?style=for-the-badge)](https://npm-stat.com/charts.html?package=prisma-uml) [![CircleCI (all branches)](https://img.shields.io/circleci/project/github/emyann/prisma-uml/master.svg?style=for-the-badge)](https://circleci.com/gh/emyann/prisma-uml)
- [Installation](#installation)
- [Commands](#commands)
- [`prisma-uml [options]`](#prisma-uml-path-options)
- [Image Rendering](#image-rendering)
- [Using the official PlantUML server online](#using-the-official-plantuml-server-online)
- [Using a local server with Docker](#using-a-local-server-with-docker)
- [Demo](#demo)
- [Incoming changes](#incoming-changes)
- [Authors](#authors)
- [Show your support](#show-your-support)## Installation
**Using `npx`**
If you don't want to install the CLI but just execute it, you can use it through `npx` this way
```sh
npx prisma-uml --help
```**Install with `npm`**
You can also install the CLI globally
```sh
npm i -g prisma-uml
prisma-uml --help
```## Commands
### `prisma-uml [options]`
> **Generate a plantUML from a Prisma schema**
```sh
prisma-uml [--output] [--server] [--file]
```**Argument**
| Name | Description |
|----------|------------------------|
| **path** | Path to Prisma schema. |**Options**
| Name | Alias | Description | Type / Choices | Default |
|--------------|-------|--------------------------------------|--------------------------------------|-----------------------------------|
| **--output** | -o | Output of the diagram | string / [text \| svg \| png \| jpg] | text |
| **--server** | -s | PlantUML Server URL | string | https://www.plantuml.com/plantuml |
| **--file** | -f | Filename or File full path to output | string | |Examples
```sh
# Output a plantUML Entity Relation Diagram as text
prisma-uml ./schema.prisma# Save the diagram into a .plantuml file
prisma-uml ./schema.prisma > my-erd.plantuml# Output a diagram as SVG
prisma-uml ./schema.prisma --output svg --file my-erd.svg# Output a diagram as PNG
prisma-uml ./schema.prisma -o png -f my-erd.png# Use a plantUML custom server to render the image
prisma-uml ./schema.prisma --server http://localhost:8080
```## Image Rendering
### Using the official PlantUML server online
PlantUML usually requires to have Java installed or a server to render the images. By default the official online server (https://www.plantuml.com/plantuml) is used to render the images. The plantUML diagram is first compressed then encoded ([plantUML encoding](https://plantuml.com/fr/code-javascript-synchronous)) and finally sent to the server to execute the rendering.
### Using a local server with Docker
You might want to avoid sending your diagram over the wire for some reason, `prisma-uml` allows you to specify a custom/local server. You could easily run your own local server using Docker:
```sh
docker run -d -p 8080:8080 plantuml/plantuml-server:jetty
```You server is now available (depending of you Docker installation) at `http://localhost:8080`. You can then use `prisma-uml` as follow:
```sh
prisma-uml ./schema.prisma --server http://localhost:8080
```## Demo
[![asciicast](https://asciinema.org/a/322572.svg)](https://asciinema.org/a/322572)
## Incoming changes
- [ ] Feat: Split attributes by entity (scalar, enum, navigation fields / external type).
- [ ] Feat: Group relations by entities.
- [ ] Feat: NextJs Preview that run the CLI on server to render a prisma schema to a plantUML ERD ?
- [ ] Feat: Display Version Number
- [ ] Feat: Handle `-o text -f my-erd.puml|.wsd|.plantuml...`
- [ ] Remove `--output` in favor of extension handling (.svg, .png, .jpg, .puml...) (?)
- [ ] Fix: Multiple cardinalities when should be online one (see simple example)
- [ ] Feat: Add logging to stdout to describe what the CLI is doing## Authors
👤 **Brendan Stromberger**
- Github: [@bstro](https://github.com/bstro)
👤 **Yann Renaudin**
- Github: [@emyann](https://github.com/emyann)
## Show your support
Give a ⭐️ if this project helped you!