Blanktar

  1. top
  2. blog
  3. 2020
  4. 06

Node.jsでMarkdownをplain textに変換する

このサイトに機能追加をする過程で、Markdownのマークアップを削除してplain textにしたい所がありました。 このサイトはNext.jsで出来ているので、Node.js/JavaScriptでの開発になります。

やりたいこと

やりたいのは、以下のようなMarkdownのデータがあったとして、

# タイトルとか
**強調**とか[リンク](https://blanktar.jp)とか。

これを、以下のようなプレーンテキストに変換する作業です。

タイトルとか
強調とかリンクとか。

やりかた

軽く調べてみたところ、remove-markdownというnpmパッケージを使うのが楽そうです。

$ npm i -s markdown-remove

使い方は、最小限だと以下のような感じです。

import removeMd from 'remove-markdown';


const markdown = `
# タイトルとか
**強調**とか[リンク](https://blanktar.jp)とか。
`;

const plain = removeMd(markdown);

console.log(plain);
// output:
//  タイトルとか
//  強調とかリンクとか。

こんな感じ。 かなりシンプルに実装出来ます。

第二引数のオプションで、gfm対応を無効にしたり画像のaltを表示しないようにしたりの指定が出来るようです。

const plain = removeMd(markdown, {
    stripListLeaders: true,  // リストの先頭の - とか * とかを消すかどうか。
    listUnicodeChar: '',     // リストの頭に使う文字。その名の通りunicodeが使える。
    gfm: true,               // GitHub-Flavored Markdownに対応させるかどうか。
    useImgAltText: true,     // 画像のalt部分を出力に含めるかどうか。
});

随分更新が無いのが気になるといえばなりますが、お手軽で良い感じです。