1.9.0 • Published 1 year ago

jsonschema2mk v1.9.0

Weekly downloads
7
License
MIT
Repository
github
Last release
1 year ago

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.

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.

1.9.0

1 year ago

1.8.1

1 year ago

1.8.0

2 years ago

1.7.0

2 years ago

1.6.0

2 years ago

1.5.0

2 years ago

1.4.0

2 years ago

1.3.4

3 years ago

1.3.3

3 years ago

1.3.2

3 years ago

1.3.1

3 years ago

1.3.0

3 years ago

1.2.0

3 years ago

1.1.1

3 years ago

1.1.0

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago