【Nuxt.js】processmd を使った Markdown ファイルの JSON 変換で躓いたことメモ
ディレクトリ構成
プロジェクトルート/
├ assets/
├ components/
├ ... など Nuxt で使うディレクトリ、ファイル色々
└ contents/
├ json/ ← processmd によって、ここに JSON ファイルが出力される
└ markdown/ ← ここにマークダウンファイルを配置
1. 何故か JSON 出力されない
実行したコマンド(公式サイトのコマンドを参考にしています)。
yarn processmd \"contents/**/*.md\" --stdout --outputDir contents/json > contents/summary.json
実行結果のディレクトリ構成
プロジェクトルート/
├ ... Nuxt で使うディレクトリ、ファイル色々
└ contents/
├ json/ ← 何も作成されない
└ markdown/
└ summary.json ← 作成される
解決策
実行コマンドの、『cotents/**/*.md』を囲っているダブルクォーテーション前のバックスラッシュ(エスケープ記号)を削除。
yarn processmd "contents/**/*.md" --stdout --outputDir contents/json > contents/summary.json
これで JSON ファイルが出力されるようになった。
※package.json の scripts 等に記述する場合には、バックスラッシュが必要となります。
2. summary.json に不要な実行コマンドまで出力される
yarn processmd "contents/**/*.md" --stdout --outputDir contents/json > contents/summary.json
上記コマンドで出力された summary.json は、以下のようになっていました。
yarn run v1.12.3
$ プロジェクトルートまでのパス\node_modules\.bin\processmd contents/**/*.md --stdout --outputDir contents/json
{
"fileMap": {
"contents/json/2019-07-10-version1.json": {
"title": "Version 1.00 ~(2019-6-16 ~ )",
"description": "Scripon! バージョン1系の更新履歴",
"created_at": "2019-07-10 00:00:00",
"dir": "contents/json",
"base": "2019-07-10-version1.json",
"ext": ".json",
"sourceBase": "2019-07-10-version1.md",
"sourceExt": ".md"
}
},
"sourceFileArray": [
"contents/markdown/history/2019-07-10-version1.md"
]
}Done in 1.41s.
1, 2 行目、および最終行に「コマンド実行時のログ」が出力されています。
解決策
summary.json の出力命令を、 > ではなく、summaryOutput オプションで行います。
yarn processmd "contents/markdown/**/*.md" --outputDir contents/json --summaryOutput contents/summary.json
これで、正しく summary.json が出力されました。
今更になって気がついたけど、yarn コマンドを > でファイル出力すれば、当然 yarn のログもファイルに書き出されちゃうよね……
該当プロジェクトの Github
実際のディレクトリ構成や processmd 実行コマンド(package.json の script を御覧ください)や、出力結果ファイルおよびその使い方などが見てみたい方は、以下の URL をご覧いただければ幸いです。