2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

この記事の概要

記事ページのコンテンツを Markdown で管理することはよくあると思います。
なおかつ、Frontmatter にメタ情報を書くこともよくあると思います。

ただ私がアホすぎるがゆえに、Frontmatter に何を書いていたか忘れたり、正しいプロパティ名を忘れたりすることが多いです。

というわけで Scaffdog を使って記事の雛形を生成する流れを記事にしました。

インストールや初期化

npm install --save-dev scaffdog
npx scaffdog init
# 設定ファイルの名前を求められる。ここでは article とする

これで.scaffdogディレクトリにconfig.jsarticle.mdが生成されました。

以降は.scaffdog/article.mdを編集していきます。

実現したいこと

設定を追加する前に、最終的に実現したいことを整理しておきます。

  • 記事の slug を入力するとsrc/content/article入力したテキスト/index.mdが作成される
  • 記事タイトルを入力すると Frontmatter のtitleにテキストが適用される
  • ファイルを作成した日付が Frontmatter のdateYYYY-MM-DDの形式で適用される
  • draft かどうかを聞かれ、Yes/No にあわせて Frontmatter のdraftに true/false が適用される

完成形

---
name: "article"
root: "src/content/article"
output: "."
ignore: []
questions:
  slug: "slugは?"
  title: "記事のタイトルは?"
  draft:
    confirm: "下書き?"
    initial: true
---

# `{{ inputs.slug }}/index.md`

```markdown
---
title: "{{ inputs.title }}"
date: {{ date "YYYY-MM-DD" }}
draft: {{ inputs.draft ? "true" : "false" }}
---
```

そんなに難しいことはしていないのですが、少しつまづいた箇所があったのでその部分だけ解説します。

今日の日付を入れる

ビルトインのヘルパーにdateがあります。

他のヘルパーは値と関数をパイプ|で繋いでいたので、date もそうなのかと思いましたが、違いました。

こちらにあるように、当日以外の日付でフォーマットすること自体ができないようです。

draft の true/false

最初、以下のように書いていました。

  draft: {{ inputs.draft ? true : false }}

しかし、これだと Yes でも No でも何も Frontmatter に記載されません。

公式ドキュメントにあるように、{{}}の中が true でも false でもアウトプットは空になってしまいます。

よく考えれば当たり前な気がしますが、Frontmatter 内で真偽値として記載しているとは言え、あくまで文字列です。

- draft: {{ inputs.draft ? true : false }}
+ draft: {{ inputs.draft ? "true" : "false" }}

これで期待通りになりました。

実際に使う

記事を作成するにあたり、ターミナルで次のコマンドを実行します。

npx scaffdog generate article

すると、先ほど設定した内容が聞かれますので、答えていきます。

ℹ Output destination directory: "src/content/article"        
? slugは? test
? 記事のタイトルは? テスト記事です
? 下書き? (y/N) Yes
       
🐶 Generated 1 file!                                                            
     ✔ src/content/article/test/index.md

生成された Markdown ファイルも問題ありません。

src/content/article/test/index.md
---
title: "テスト記事です"
date: 2024-07-14
draft: true
---
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?