Nuxt.js+processmdでブログ作るよ
環境
なまえ | あたい |
---|
OS | Windows 10 Pro |
Node | 12.14.1 |
Nuxt.jsプロジェクト作成
あとは好きな方を選んでいきます
- programming language
- TypeScriptにしといた(けどTS書き方分かんなくて途中からJSになってる。クソ参考にならねえじゃん)
- UI framework
- Vuetifyがマテリアルデザイン(今回はElement使ってみる)
- あとは適当に(PWA入れといた)
そしたら移動して、サーバー起動させます
Markdownファイルの保存場所を作る
nuxtblogフォルダ(componentsとかassetsとかnode_moduleがあるフォルダ)に
contentsフォルダを作り、その中に
postsフォルダを作り、その中に
markdownフォルダを作成します。
こんな感じに
後はMarkdownフォルダにMarkdownファイルを置いていきます。
今回は適当にこんなMarkdownファイル(名前:first.md)を入れます。
Markdownファイルの情報をJSONに変換するprocessmd
processmd入れます
コマンド長いのでpackage.jsonに書き足します
scriptsの中にmdの一行書き足せばおk
あとはターミナルで以下叩きます。
この作業は記事を追加したら毎回叩く必要があります。
叩くとcontents/postsにjsonってフォルダが出来てると思います。あとsummary.jsonも
Nuxt.jsで記事一覧用意する
こっからはコピペです。いくぞおおおおお
pages/index.vueを開いて以下のJSをどーん
ここではタイトルしか出てませんが、日付とかタグとかも出せると思います。
localhost:4545は別に気にしないでいいです。だた調子が悪かったのでポート番号を変えただけです。(nuxt --port 4545で変えられる)
記事一覧ページを作る
動的ルーティング # とは
よくわからんけど静的サイトジェネレートに必要。
というわけでnuxt.config.js開いてね
参考:https://jmblog.jp/posts/2018-01-18/build-a-blog-with-nuxtjs-and-markdown-2/
参考:https://isoppp.com/note/2018-05-16/3-nuxt-firebase-blog-markdown/
開いたらJS書き足していきます。
sourceFileNameToUrl()関数はposts/${ファイル名}
の文字列を返す関数です。
こうすることでURLがposts/{タイトル}
になるはずです。
ですがこれだけではまだ生成できません。
生成するには、
pagesフォルダにpostsフォルダを作成して、
その中に _slug.vue ファイルを作成します。
_slug.vueの中身
_slug.vueは記事の表示に使います。
記事一覧から選んだ時にちゃんとMarkdownの中身が表示されていれば動いてます。
おまけ 静的サイトジェネレートしてみる
以下の一行をターミナルに入れます
これで静的サイトが生成されました。後はこれをGitHubPagesに上げるなりすればいいと思います。
今回はWeb Server for Chromeが入ってたのでそれ使って見てみます。
npm run generate
の出力先はdistになってるのでそれを指定してWeb鯖立てます。
以上です。
一応/posts/first/にアクセスした後にF5(再読み込み)をかけても404にならないことを確認できたところで終わろうと思います。
PWAも入れてあるので試せる。
おまけ
GitHub Pages使う場合は、nuxt.config.jsをこんな感じにすればいいと思います。
おわりに
nuxt.config.jsのmode: 'spa'
ってSPAであってるの?
静的サイトジェネレートの時は書いてなかったんだけど?
ソースコード:https://github.com/takusan23/NuxtBlog