UNPKG

13.5 kBMarkdownView Raw
1
2
3# mermaid [![Build Status](https://travis-ci.org/mermaid-js/mermaid.svg?branch=master)](https://travis-ci.org/mermaid-js/mermaid) [![NPM](https://img.shields.io/npm/v/mermaid)](https://www.npmjs.com/package/mermaid) [![Coverage Status](https://coveralls.io/repos/github/mermaid-js/mermaid/badge.svg?branch=master)](https://coveralls.io/github/mermaid-js/mermaid?branch=master) [![Join our Slack!](https://img.shields.io/static/v1?message=join%20chat&color=9cf&logo=slack&label=slack)](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) [![This project is using Percy.io for visual regression testing.](https://percy.io/static/images/percy-badge.svg)](https://percy.io/Mermaid/mermaid)
4
5![banner](./img/header.png)
6**Edit this Page** [![N|Solid](./docs/img/GitHub-Mark-32px.png)](https://github.com/mermaid-js/mermaid/blob/develop/docs/README.md)
7
8:trophy: **Mermaid was nominated and won the [JS Open Source Awards (2019)](https://osawards.com/javascript/#nominees) in the category "The most exciting use of technology"!!! Thanks to all involved, people committing pull requests, people answering questions and special thanks to Tyler Long who is helping me maintain the project.**
9
10
11<!-- <Main description> -->
12__mermaid is a Javascript based diagramming and charting tool that uses markdown-inspired text definitions and a renderer to create and modify complex diagrams. The main purpose of mermaid is to help Documentation catch up with Development.__
13
14# Doc-Rot is a Catch-22 that Mermaid helps to solve.
15
16### Diagramming and Documentation costs precious developer time and gets outdated quickly.
17### But not having diagrams or Docs ruins productivity and hurts organizational learning.
18
19## mermaid addresses this problem by cutting the time, effort and tooling that is required to create modifiable diagrams and charts, for smarter and more reusable content.**
20
21The text definitions for mermaid diagrams allows for it to be updated easily, it can also be made part of production scripts (and other pieces of code). So less time needs be spent on documenting, as a separate and laborious task.
22
23
24## Even non-programmers can create diagrams through the [Mermaid Live Editor](https://github.com/mermaidjs/mermaid-live-editor).
25
26## [mermaid Overview](./n00b-overview.md) has video tutorials.
27
28## Use mermaid with your favorite applications, check out the list of [Integrations and Usages of Mermaid](./integrations.md)**
29
30## For a more detailed introduction to mermaid and some of it's more basic uses, look to the [Beginner's Guide](https://mermaid-js.github.io/mermaid/#/n00b-overview) and [Usage](./usage.md).
31
32
33## [CDN](https://unpkg.com/mermaid/)
34
35## [Documentation](https://mermaidjs.github.io)
36
37## [Contribution](https://github.com/mermaid-js/mermaid/blob/develop/CONTRIBUTING.md)
38
39## Record of [Mermaid Version Changes](./versionUpdates.md).
40
41
42# Version News: 8.7.0 Released with Updates to Theme Configuration
43
44
45## [Version 8.7.0](./docs/theming.md) Mermaid comes out with a System for Dynamic and Integrated Diagram Theme Configuration.
46
47
48## Mermaid comes out with [New Configuration Protocols in Version 8.6.0](./docs/8.6.0_docs.md)
49
50
51## New diagrams in 8.4
52
53With version 8.4 class diagrams have got some new features, bug fixes and documentation. Another new feature in 8.4 is the new diagram type, state diagrams.
54
55![Image show the two new diagram types](./docs/img/new-diagrams.png)
56
57## Special note regarding version 8.2
58
59In version 8.2 a security improvement was introduced. A securityLevel configuration was introduced which sets the level of trust to be used on the parsed diagrams.
60
61- **true**: (default) tags in text are encoded, click functionality is disabled
62- false: tags in text are allowed, click functionality is enabled
63
64Closed issues:
65
66⚠️ **Note** : This changes the default behaviour of mermaid so that after upgrade to 8.2, if the securityLevel is not configured, tags in flowcharts are encoded as tags and clicking is prohibited.
67
68If your application is taking resposibility for the diagram source security you can set the securityLevel accordingly. By doing this clicks and tags are again allowed.
69
70```javascript
71mermaidAPI.initialize({
72 securityLevel: 'loose'
73});
74```
75
76<!-- </Main description> -->
77
78__The following are some examples of the diagrams, charts and graphs that can be made using mermaid and the Markdown-inspired text specific to it. Click here jump into the [text syntax](https://mermaid-js.github.io/mermaid/#/n00b-syntaxReference).__
79<table>
80<!-- <Flowchart> -->
81<tr><td colspan=2 align="center">
82 <b>Flow</b></br>
83 [<a href="http://mermaid-js.github.io/mermaid/#/flowchart">docs</a> - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoiZ3JhcGggVERcbiAgICBBW0hhcmRdIC0tPnxUZXh0fCBCKFJvdW5kKVxuICAgIEIgLS0-IEN7RGVjaXNpb259XG4gICAgQyAtLT58T25lfCBEW1Jlc3VsdCAxXVxuICAgIEMgLS0-fFR3b3wgRVtSZXN1bHQgMl0iLCJtZXJtYWlkIjp7InRoZW1lIjoiZGVmYXVsdCJ9fQ">live editor</a>]
84</td></tr>
85<tr>
86 <td><pre>
87graph TD
88A[Hard] -->|Text| B(Round)
89B --> C{Decision}
90C -->|One| D[Result 1]
91C -->|Two| E[Result 2]
92 </pre></td>
93 <td align="center">
94 <img src="https://raw.githubusercontent.com/mermaid-js/mermaid/master/img/gray-flow.png" />
95 </td>
96</tr>
97<!-- </Flowchart> -->
98<!-- <Sequence> -->
99<tr><td colspan=2 align="center">
100 <b>Sequence</b><br />
101 [<a href="http://mermaid-js.github.io/mermaid/#/sequenceDiagram">docs</a> - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoic2VxdWVuY2VEaWFncmFtXG5BbGljZS0-PkpvaG46IEhlbGxvIEpvaG4sIGhvdyBhcmUgeW91P1xubG9vcCBIZWFsdGhjaGVja1xuICAgIEpvaG4tPj5Kb2huOiBGaWdodCBhZ2FpbnN0IGh5cG9jaG9uZHJpYVxuZW5kXG5Ob3RlIHJpZ2h0IG9mIEpvaG46IFJhdGlvbmFsIHRob3VnaHRzIVxuSm9obi0tPj5BbGljZTogR3JlYXQhXG5Kb2huLT4-Qm9iOiBIb3cgYWJvdXQgeW91P1xuQm9iLS0-PkpvaG46IEpvbGx5IGdvb2QhIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQifX0">live editor</a>]
102</td></tr>
103<tr>
104 <td><pre>
105sequenceDiagram
106Alice->>John: Hello John, how are you?
107loop Healthcheck
108 John->>John: Fight against hypochondria
109end
110Note right of John: Rational thoughts!
111John-->>Alice: Great!
112John->>Bob: How about you?
113Bob-->>John: Jolly good!
114 </pre></td>
115 <td align="center">
116 <img src="https://raw.githubusercontent.com/mermaid-js/mermaid/master/img/gray-sequence.png" />
117 </td>
118</tr>
119<!-- </Sequence> -->
120<!-- <Gantt> -->
121<tr><td colspan=2 align="center">
122 <b>Gantt</b><br />
123 [<a href="http://mermaid-js.github.io/mermaid/#/gantt">docs</a> - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoiZ2FudHRcbnNlY3Rpb24gU2VjdGlvblxuQ29tcGxldGVkIDpkb25lLCAgICBkZXMxLCAyMDE0LTAxLTA2LDIwMTQtMDEtMDhcbkFjdGl2ZSAgICAgICAgOmFjdGl2ZSwgIGRlczIsIDIwMTQtMDEtMDcsIDNkXG5QYXJhbGxlbCAxICAgOiAgICAgICAgIGRlczMsIGFmdGVyIGRlczEsIDFkXG5QYXJhbGxlbCAyICAgOiAgICAgICAgIGRlczQsIGFmdGVyIGRlczEsIDFkXG5QYXJhbGxlbCAzICAgOiAgICAgICAgIGRlczUsIGFmdGVyIGRlczMsIDFkXG5QYXJhbGxlbCA0ICAgOiAgICAgICAgIGRlczYsIGFmdGVyIGRlczQsIDFkIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQifX0">live editor</a>]
124</td></tr>
125<tr>
126 <td><pre>
127gantt
128section Section
129Completed :done, des1, 2014-01-06,2014-01-08
130Active :active, des2, 2014-01-07, 3d
131Parallel 1 : des3, after des1, 1d
132Parallel 2 : des4, after des1, 1d
133Parallel 3 : des5, after des3, 1d
134Parallel 4 : des6, after des4, 1d
135 </pre></td>
136 <td align="center">
137 <img src="https://raw.githubusercontent.com/mermaid-js/mermaid/master/img/gray-gantt.png" />
138 </td>
139</tr>
140<!-- </Gantt> -->
141<!-- <Class> -->
142<tr><td colspan=2 align="center">
143 <b>Class</b><br />
144 [<a href="http://mermaid-js.github.io/mermaid/#/classDiagram">docs</a> - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoiY2xhc3NEaWFncmFtXG5DbGFzczAxIDx8LS0gQXZlcnlMb25nQ2xhc3MgOiBDb29sXG48PGludGVyZmFjZT4-IENsYXNzMDFcbkNsYXNzMDkgLS0-IEMyIDogV2hlcmUgYW0gaT9cbkNsYXNzMDkgLS0qIEMzXG5DbGFzczA5IC0tfD4gQ2xhc3MwN1xuQ2xhc3MwNyA6IGVxdWFscygpXG5DbGFzczA3IDogT2JqZWN0W10gZWxlbWVudERhdGFcbkNsYXNzMDEgOiBzaXplKClcbkNsYXNzMDEgOiBpbnQgY2hpbXBcbkNsYXNzMDEgOiBpbnQgZ29yaWxsYVxuY2xhc3MgQ2xhc3MxMCB7XG4gID4-c2VydmljZT4-XG4gIGludCBpZFxuICBzaXplKClcbn0iLCJtZXJtYWlkIjp7InRoZW1lIjoiZGVmYXVsdCJ9fQ">live editor</a>]
145</td></tr>
146<tr>
147 <td><pre>
148classDiagram
149Class01 &lt;|-- AveryLongClass : Cool
150&lt;&lt;interface>> Class01
151Class09 --> C2 : Where am i?
152Class09 --* C3
153Class09 --|> Class07
154Class07 : equals()
155Class07 : Object[] elementData
156Class01 : size()
157Class01 : int chimp
158Class01 : int gorilla
159class Class10 {
160 &lt;&lt;service>>
161 int id
162 size()
163}
164</pre></td>
165 <td align="center">
166 <img src="https://raw.githubusercontent.com/mermaid-js/mermaid/master/img/gray-class.png" />
167 </td>
168</tr>
169<!-- </Class> -->
170<!-- <State> -->
171<tr><td colspan=2 align="center">
172 <b>State</b><br />
173 [<a href="http://mermaid-js.github.io/mermaid/#/stateDiagram">docs</a> - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoic3RhdGVEaWFncmFtXG4gICAgWypdIC0tPiBTdGlsbFxuICAgIFN0aWxsIC0tPiBbKl1cbiAgICBTdGlsbCAtLT4gTW92aW5nXG4gICAgTW92aW5nIC0tPiBTdGlsbFxuICAgIE1vdmluZyAtLT4gQ3Jhc2hcbiAgICBDcmFzaCAtLT4gWypdIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQifX0">live editor</a>]
174</td></tr>
175<tr>
176 <td><pre>
177stateDiagram
178[*] --> Still
179Still --> [*]
180Still --> Moving
181Moving --> Still
182Moving --> Crash
183Crash --> [*]
184</pre></td>
185 <td align="center">
186 <img src="https://raw.githubusercontent.com/mermaid-js/mermaid/master/img/gray-state.png" />
187 </td>
188</tr>
189<!-- </State> -->
190<!-- <Pie> -->
191<tr><td colspan=2 align="center">
192 <b>Pie</b><br />
193 [<a href="http://mermaid-js.github.io/mermaid/#/pie">docs</a> - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoicGllXG5cIkRvZ3NcIiA6IDQyLjk2XG5cIkNhdHNcIiA6IDUwLjA1XG5cIlJhdHNcIiA6IDEwLjAxIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQifX0">live editor</a>]
194</td></tr>
195<tr>
196 <td><pre>
197pie
198"Dogs" : 386
199"Cats" : 85
200"Rats" : 15
201</pre></td>
202 <td align="center">
203 <img src="https://raw.githubusercontent.com/mermaid-js/mermaid/master/img/gray-pie.png" />
204 </td>
205</tr>
206<!-- </Pie> -->
207<!-- <Git> -->
208<tr><td colspan=2 align="center">
209 <b>Git</b><br />
210 [experimental - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoiZ2l0R3JhcGg6XG5vcHRpb25zXG57XG4gICAgXCJub2RlU3BhY2luZ1wiOiAxNTAsXG4gICAgXCJub2RlUmFkaXVzXCI6IDEwXG59XG5lbmRcbmNvbW1pdFxuYnJhbmNoIG5ld2JyYW5jaFxuY2hlY2tvdXQgbmV3YnJhbmNoXG5jb21taXRcbmNvbW1pdFxuY2hlY2tvdXQgbWFzdGVyXG5jb21taXRcbmNvbW1pdFxubWVyZ2UgbmV3YnJhbmNoXG4iLCJtZXJtYWlkIjp7InRoZW1lIjoiZGVmYXVsdCJ9fQ">live editor</a>]
211</td></tr>
212<tr>
213 <td colspan="2" align="center"><i>Coming soon!</i></td>
214</tr>
215<!-- </Git> -->
216<!-- <Journey> -->
217<tr><td colspan=2 align="center">
218 <b>User Journey</b><br />
219 [<a href="http://mermaid-js.github.io/mermaid/#/user-journey">docs</a> - <a href="https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoic3RhdGVEaWFncmFtXG4gICAgWypdIC0tPiBTdGlsbFxuICAgIFN0aWxsIC0tPiBbKl1cbiAgICBTdGlsbCAtLT4gTW92aW5nXG4gICAgTW92aW5nIC0tPiBTdGlsbFxuICAgIE1vdmluZyAtLT4gQ3Jhc2hcbiAgICBDcmFzaCAtLT4gWypdIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQifX0">live editor</a>]
220</td></tr>
221<tr>
222 <td>
223 <pre>
224 journey
225 title My working day
226 section Go to work
227 Make tea: 5: Me
228 Go upstairs: 3: Me
229 Do work: 1: Me, Cat
230 section Go home
231 Go downstairs: 5: Me
232 Sit down: 3: Me
233</pre></td>
234 <td align="center">
235 <img alt="User Journey Diagram" src="img/gray-user-journey.png" />
236 </td>
237</tr>
238<!-- </Journey> -->
239
240</table>
241
242## Related projects
243
244- [Command Line Interface](https://github.com/mermaid-js/mermaid-cli)
245- [Live Editor](https://github.com/mermaid-js/mermaid-live-editor)
246- [HTTP Server](https://github.com/TomWright/mermaid-server)
247
248# Contributors [![Help wanted](https://img.shields.io/github/labels/mermaid-js/mermaid/Help%20wanted!)](https://github.com/mermaid-js/mermaid/issues?q=is%3Aissue+is%3Aopen+label%3A%22Help+wanted%21%22) [![Contributors](https://img.shields.io/github/contributors/mermaid-js/mermaid)](https://github.com/mermaid-js/mermaid/graphs/contributors) [![Commits](https://img.shields.io/github/commit-activity/m/mermaid-js/mermaid)](https://github.com/mermaid-js/mermaid/graphs/contributors)
249
250Mermaid is a growing community and is always accepting new contributors. There's a lot of different ways to help out and we're always looking for extra hands! Look at [this issue](https://github.com/mermaid-js/mermaid/issues/866) if you want to know where to start helping out.
251
252Detailed information about how to contribute can be found in the [contribution guide](CONTRIBUTING.md)
253
254# Appreciation
255A quick note from Knut Sveidqvist:
256>*Many thanks to the [d3](http://d3js.org/) and [dagre-d3](https://github.com/cpettitt/dagre-d3) projects for providing the graphical layout and drawing libraries!*
257>*Thanks also to the [js-sequence-diagram](http://bramp.github.io/js-sequence-diagrams) project for usage of the grammar for the sequence diagrams. Thanks to Jessica Peter for inspiration and starting point for gantt rendering.*
258>*Thank you to [Tyler Long](https://github.com/tylerlong) who has been a collaborator since April 2017.*
259>
260>*Thank you to the ever-growing list of [contributors](https://github.com/knsv/mermaid/graphs/contributors) that brought the project this far!*
261
262---
263
264*Mermaid was created by Knut Sveidqvist for easier documentation.*