{"id":17497483,"url":"https://github.com/moox/markdown-to-json","last_synced_at":"2025-04-13T13:12:58.101Z","repository":{"id":42036062,"uuid":"190804634","full_name":"MoOx/markdown-to-json","owner":"MoOx","description":"Transform markdown content as a JSON for easy rendering for front-end with React, React Native \u0026 similar","archived":false,"fork":false,"pushed_at":"2023-01-05T16:16:54.000Z","size":1280,"stargazers_count":24,"open_issues_count":13,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-19T19:31:44.736Z","etag":null,"topics":["html","json","markdown","react","react-native","rehype","remark","unified"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MoOx.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-06-07T20:27:48.000Z","updated_at":"2024-09-02T14:52:00.000Z","dependencies_parsed_at":"2023-02-04T06:45:25.327Z","dependency_job_id":null,"html_url":"https://github.com/MoOx/markdown-to-json","commit_stats":null,"previous_names":["phenomic/markdown-as-json"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MoOx%2Fmarkdown-to-json","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MoOx%2Fmarkdown-to-json/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MoOx%2Fmarkdown-to-json/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MoOx%2Fmarkdown-to-json/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MoOx","download_url":"https://codeload.github.com/MoOx/markdown-to-json/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248717237,"owners_count":21150389,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["html","json","markdown","react","react-native","rehype","remark","unified"],"created_at":"2024-10-19T15:50:20.436Z","updated_at":"2025-04-13T13:12:58.081Z","avatar_url":"https://github.com/MoOx.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @moox/markdown-to-json\n\n[![Build Status](https://github.com/MoOx/markdown-to-json/workflows/Build/badge.svg)](https://github.com/MoOx/markdown-to-json/actions)\n[![Version](https://img.shields.io/npm/v/@moox/markdown-to-json.svg)](https://www.npmjs.com/package/@moox/markdown-to-json)\n\n\u003e Transform markdown content as a JSON\n\nThis package is a minimal markdown preprocessor to make it easy to render\nmarkdown in a JS environement like React, React Native etc.\n\nIt is meant to be used before runtime:\n\n1. You transform your markdown files as JSON\n2. You consume the JSON files from the JS without any runtime transformation\n   required\n\n## Installation\n\n```console\nnpm install @moox/markdown-to-json\n```\n\nor\n\n```console\nyarn add @moox/markdown-to-json\n```\n\n## Usage\n\n### CLI\n\n```console\nnpx markdown-to-json \"docs/**/*.md\" [optional output-folder]\n```\n\nor\n\n```console\nyarn markdown-to-json \"docs/**/*.md\" [optional output-folder]\n```\n\n⚠️ Be sure to put globs between quotes.\n\n### Node.js\n\n```js\nconst mdjs = require(\"@moox/markdown-to-json\");\nconst output = mdjs.markdownAsJsTree(\"# markdown string\");\n```\n\nBy default, it handles:\n\n- front-matter (via gray-matter)\n- auto slug for headings (with anchors)\n- code highlight (via highlight.js)\n- table of contents (via [remark-toc](https://www.npmjs.com/package/remark-toc))\n\nThe idea is to get a markdown like this\n\n````markdown\n---\ntest: a\ntest2: b\n---\n\n## Test\n\n[link](href)\n\n```js\nconsole.log(window);\n```\n````\n\nlike\n\n```js\n{\n  \"test\": \"a\",\n  \"test2\": \"b\",\n  \"headings\": [\n    {\n      \"id\": \"test\",\n      \"level\": 2,\n      \"text\": \"Test\"\n    }\n  ],\n  \"body\": {\n    \"tag\": \"div\",\n    \"children\": [\n      {\n        \"tag\": \"h2\",\n        \"props\": {\n          \"id\": \"test\"\n        },\n        \"children\": [\n          //...\n        ]\n      }\n    ]\n  }\n}\n```\n\n### Options\n\nIn addition to the markdown string, 2 arguments are accepted that are functions\nthat should returns an array of plugin with there options:\n\n- [remark](https://github.com/remarkjs/remark) plugins\n- [rehype](https://github.com/rehypejs/rehype) plugins\n\nThe first example is equivalent to\n\n```js\nconst mdjs = require(\"@moox/markdown-to-json\");\nconst output = mdjs.markdownAsJsTree(\n  \"# markdown string\",\n  mdjs.defaultRemarkPlugins\n  mdjs.defaultRehypePlugins\n);\n```\n\nBy default sending arguments will override [default plugins](./index.js). You\ncan get the default one by doing something like this\n\n```js\nconst mdjs = require(\"@moox/markdown-to-json\");\nconst output = mdjs.markdownAsJsTree(\n  \"# markdown string\",\n  () =\u003e ([\n    [require(\"remark-whatever\"), {optionForWhatever: true}],\n    ...mdjs.defaultRemarkPlugins()\n  ]),\n  () =\u003e ([\n    [require(\"rehype-hispterpackage\"), {/* no options */}}],\n    [require(\"rehype-anotherhispterpackage\"), {powerUserOption: \"super argument\"}}],\n    ...mdjs.defaultRehypePlugins()\n  ]);\n);\n```\n\nThanks [unified](https://unifiedjs.com/) to make this possible!\n\n[Check out input](__tests__/index.js) \u0026\n[output](__tests__/__snapshots__/index.js.snap) to get an idea of what to expect\nfrom this package.\n\n---\n\n[LICENSE](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoox%2Fmarkdown-to-json","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoox%2Fmarkdown-to-json","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoox%2Fmarkdown-to-json/lists"}