# markdown-posts-to-json

> 将 Markdown 格式的文章（.md）后缀，提取元数据，并使用 Markdown-it 将文章内容转化为 Html，最后输出为 json 文件。

Latest version **0.0.10** (published 2018-05-04) · BSD license · 0 weekly downloads

## Install

```sh
npm install markdown-posts-to-json
pnpm add markdown-posts-to-json
yarn add markdown-posts-to-json
bun add markdown-posts-to-json
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.10 |
| Published | 2018-05-04 |
| First published | 2018-04-25 |
| Weekly downloads | 0 |
| License | BSD |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 4 |
| Unpacked size | 11.4 KB |
| Known vulnerabilities | 0 (+3 in 2 direct dependencies) |
| Install scripts | no |
| GitHub stars | 0 |
| Author | 稻米鼠 |
| Maintainers | dmouse |
| Keywords | Webpack, JavaScirpt, Markdown, JSON |

## Links

- npm: https://www.npmjs.com/package/markdown-posts-to-json
- Repository: https://github.com/dmscode/markdown-posts-to-json
- Homepage: https://github.com/dmscode/markdown-posts-to-json#readme
- Issues: https://github.com/dmscode/markdown-posts-to-json/issues
- npm.io page: https://npm.io/package/markdown-posts-to-json

## Dependencies (4)

- [js-yaml](https://npm.io/package/js-yaml.md) ^3.11.0
- [webpack](https://npm.io/package/webpack.md) ^3.6.0
- [markdown-it](https://npm.io/package/markdown-it.md) ^8.4.1
- [highlight.js](https://npm.io/package/highlight.js.md) ^9.12.0

## Alternatives

- [@mapbox/jsonlint-lines-primitives](https://npm.io/package/@mapbox/jsonlint-lines-primitives.md) — 5.3M weekly downloads
- [reftools](https://npm.io/package/reftools.md) — 3.5M weekly downloads
- [@hey-api/openapi-ts](https://npm.io/package/@hey-api/openapi-ts.md) — 3.5M weekly downloads
- [@mapbox/geojson-rewind](https://npm.io/package/@mapbox/geojson-rewind.md) — 2.4M weekly downloads
- [turbo-stream](https://npm.io/package/turbo-stream.md) — 1.7M weekly downloads

## Recent versions

- 0.0.10 (latest) — 2018-05-04
- 0.0.8 — 2018-04-27
- 0.0.7 — 2018-04-27
- 0.0.6 — 2018-04-26
- 0.0.5 — 2018-04-25
- 0.0.4 — 2018-04-25
- 0.0.3 — 2018-04-25
- 0.0.2 — 2018-04-25
- 0.0.1 — 2018-04-25

## README

Markdown posts to JSON
===

本插件主要功能是将 Markdown 文档头部的 YAML 格式数据进行提取，其余部分作为文章内容转化为 HTML 格式，并将上述内容转换为 JSON 格式输出。

主要是为了满足对博客文章的处理需求。

同时会生成一个索引文件（JSON），内容为一个包含所有文章元数据（文章头部 YAML 格式部分）内容的对象。对象结构与目录结构相同，并支持将 `index.md` 文件的元数据合并至它所在目录的对象中

## 使用方法：

本插件需配合 Webpack 服用，只需在 Webpack 配置文件中如下配置即可，对于 Markdown-It 的配置，可在 `md` 属性中进行配置，`md` 属性必须存在，最简设置为：`new MarkdownIt()`。其他选项均非必须（但估计你不会喜欢我的默认值）。

如果需要代码高亮（按如下配置即可实现），需在页面中自行引入 `highlight.js` 的样式表，例如：`import 'highlight.js/styles/atom-one-dark.css'`

## Webpack 配置

```js
  const hljs = require("highlight.js")
  const MarkdownIt = require("markdown-it")

  ...

    plugins: [
    // Markdown posts 2 json data
    new mp2j({
      // input path, your posts path
      postPath: path.resolve(__dirname, './posts'),
      // output path
      outPath: 'dist/posts',
      // include sub dir
      includeSubPath: true,
      // name for index of JSON
      indexName: 'index',
      // merge index.md's metadatas to its dir
      mergeIndex2dir: true,
      // sub Node's name
      subNode: 'posts',
      // all prefix is 'mi_' keys will be remove prefix and transfered to Markdown-it. This is default option of Markdown-It
      md: new MarkdownIt({
        html: false,
        xhtmlOut: false,
        breaks: false,
        langPrefix: 'language-',
        linkify: false,
        typographer: false,
        quotes: '“”‘’',
        highlight: function (str, lang) {
          if (lang && hljs.getLanguage(lang)) {
            try {
              return '<pre class="hljs"><code>' +
                    hljs.highlight(lang, str, true).value +
                    '</code></pre>';
            } catch (__) {}
          }
          return '<pre class="hljs"><code>' + mp2j.options.md.utils.escapeHtml(str) + '</code></pre>';
        }
      })
    })
  ]
```

## 更新日志：

### 0.0.9
支持使用 parent 设置父节点，支持多个根节点。

### 0.0.8
修改依赖引入位置，以及 Markdwon-It 选项传入方式，现在可正常实现代码高亮（需自行引入 highlight.js 的样式表）

### 0.0.7
文章数据分割正则优化

### 0.0.6
修正索引文件层级问题，可以设置索引文件中子节点的名称

### 0.0.5
分割正则优化

### 0.0.4
包信息完善

### 0.0.3
优化索引文件结构

### 0.0.2
实现了 Markdown-it 的参数传入

### 0.0.1
功能初步实现

---
_Source: https://npm.io/package/markdown-posts-to-json · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
