jsonschema2mk
v2.0.0
Published
JSON schema to markdown generator
Downloads
9,790
Readme
JSON schema to markdown generator (jsonschema2mk)
This project allows to generate documentation from JSON Schema spezifications.
Examples:
Supported JSON schema features
- Basic attributes:
- title, description, default, examples
- enum, const
- deprecated
- $ref is same file, $id, $anchor
- number, integer
- minimum, maximum, exclusiveMinimum, exclusiveMaximum
- multipleOf
- string
- minLength, maxLength
- format
- pattern
- contentMediaType
- contentEncoding
- boolean
- null
- object
- properties
- additionalProperties (as boolean and as object)
- patternProperties
- required
- minProperties, maxProperties
- propertyNames.pattern
- array
- items (schema)
- items (array of schemas)
- minItems, maxItems
- uniqueItems
- contains
- minContains, maxContains
- allOf, oneOf, anyOf, not (not for object properties)
- if, then, else
- multiple types (
type: ["string", "null"]
) - object: dependencies (Properties and Schema)
Missing JSON schema features
- $ref remotely or in other files
Install & Usage
npm install jsonschema2mk
Generate DOC.md:
npx jsonschema2mk --schema schema.json >DOC.md
Overwrite some partials with own partials:
npx jsonschema2mk --schema schema.json --partials dir/ >DOC.md
Add to your project
Add to package.json:
{
"scripts": {
"doc": "jsonschema2mk --schema schema.json >DOC.md"
}
}
and run npm run doc
.
Command line options
Usage:
npx jsonschema2mk [<options>] >DOC.md
Internal Feature Extensions (Option extension)
You can load feature extensions if needed.
Implemented Extensions:
table-format-2
: Show tables with the columns name, type, title, description and required. Default is to display a combined name and title column. See example output.yaml-examples
: Show examples in YAML format.front-matter
: Add a front matter block.You can define the front-matter with--fm.para1 value1 --fm.para2 value2
Example Calls:
# table-format 2
npx jsonschema2mk --schema schema.json \
--extension table-format-2 >DOC.md
# yaml-examples
npx jsonschema2mk --schema schema.json \
--extension yaml-examples >DOC2.md
# yaml-examples and front matter
npx jsonschema2mk --schema schema.json \
--extension yaml-examples \
--extension front-matter --fm.parent Reference --fm.nav_order 1 >DOC3.md
Load External Plugins (Option plugin)
If partial overwriting is not enogh (see above), you can load plugins.
In the plugin, you can load your own partials. It has the same API as extensions.
The Arguments Vector is available via data.argv
.
Example:
module.exports = function(data, jsonschema2mk) {
jsonschema2mk.load_partial_dir(__dirname + "/partials");
};
Call it via:
npx jsonschema2mk --schema schema.json --plugin my-plugin.js >DOC.md
Usage as Libray
You can integration this code as Library. See cli.js
for an example.
const jsonschema2mk = require("jsonschema2mk");
const schema = {
"type": "number"
};
const jsm = new jsonschema2mk({
level: 0
});
const output = jsm.convert(schema);
Options see CLI options
Examples
The README.md files of all applications of the osiota project are generated with the help of this program. See the adaption script in the osiota-dev repository as well.
Examples:
License
This software is released under the MIT license.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.