前提・実現したいこと
Next.jsでブログを作っています.
remark で Markdown をレンダリングする際に remark-highlight.js でコードにシンタックスハイライトを反映させたいです.
発生している問題・エラーメッセージ
npm install remark-highlight.js
を行い,以下のようにコードを書きました.
該当のソースコード
typescript
1// lib/posts.ts 2 3import fs from 'fs' 4import path from 'path' 5import matter from 'gray-matter' 6import remark from 'remark' 7import html from 'remark-html' 8import highlight from 'remark-highlight.js' 9 10export async function getPostData(id: string) { 11 const fullPath = path.join(postsDirectory, `${id}.md`) 12 const fileContents = fs.readFileSync(fullPath, 'utf8') 13 14 // Use gray-matter to parse the post metadata section 15 const matterResult = matter(fileContents) 16 17 // Use remark to convert markdown into HTML string 18 const processedContent = await remark() 19 .use(highlight) 20 .use(html) 21 .process(matterResult.content) 22 const contentHtml = processedContent.toString() 23 24 // Combine the data with the id 25 return { 26 id, 27 contentHtml, 28 ...(matterResult.data as { date: string; title: string; coverImage: string }) 29 } 30}
Markdown
1~~~javascript 2ReactDOM.render( 3 <h1>Hello, world!</h1>, 4 document.getElementById('root') 5); 6~~~
もちろん Markdown のプレビューではシンタックスは反映されますが,ブログには反映されませんでした.
試したこと
import highlight from 'remark-highlight.js'
を記述した際に,
「モジュール 'remark-highlight.js' の宣言ファイルが見つかりませんでした。」
という警告が出たので global.d.ts に
declare module 'remark-highlight.js';
を追記しました.追記したところ,警告は無くなりましたが結果は変わりませんでした.
補足情報(FW/ツールのバージョンなど)
バージョンは以下のようになっています.
json
1 : 2 "gray-matter": "^4.0.2", 3 "next": "^9.5.3", 4 "react": "16.13.1", 5 "react-dom": "16.13.1", 6 "remark": "^12.0.1", 7 "remark-highlight.js": "^6.0.0", 8 "remark-html": "^12.0.0" 9 :
どなたかご教授いただけますと幸いです.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/21 13:04