okaryo.log

Gatsbyの記事テンプレートをシェルスクリプトで作成する | okaryo.log

Gatsbyの記事テンプレートをシェルスクリプトで作成する

    #Gatsby#ShellScript

きっかけは怠惰

このブログはGatsbyを使って作っている。

記事を作成するときはsrc/contents/2022/20220418-name/index.mdを毎回作成している(ディレクトリ構成には個人差があると思われる)。

これを毎回作成するのめんどくさいな、コマンドで自動生成できるようにならないかな、と思ったのが今回のきっかけだった。

さっそくシェルスクリプトを作成

scripts/generate_template.shに以下のコードを記述した。

#!/bin/sh

DATE=`date '+%Y-%m-%d'`
CONTENT="---
title: \"\"
description: \"\"
tags: []
createdAt: \"$DATE\"
updatedAt: \"$DATE\"
thumbnail: \"./thumbnail.png\"
---"

DIR_NAME=$1
YEAR=`date '+%Y'`
DIR_PREFIX=`date '+%Y%m%d'`
DIR=src/contents/$YEAR/$DIR_PREFIX-$DIR_NAME

mkdir $DIR
echo "$CONTENT" >> $DIR/index.md

package.jsonのscriptsを作成

"scripts": {
  "template": "sh scripts/generate_template.sh $npm_config_name"
}

npmコマンドで引数を受け取るには$npm_config_[param]とするらしい。呼び出す際はnpm run [script] -param='value'のようになる。

いざ実行!!

npm run template -name='generate-post-template-by-shellscript'

---
title: ""
comment: ""
tags: []
createdAt: "2022-04-18"
updatedAt: "2022-04-18"
thumbnail: "./thumbnail.png"
---

無事、上記の内容のMarkdownがsrc/contents/2022/20220418-generate-post-template-by-shellscript/index.mdに作成された。

余談

npmコマンドに引数を渡すときは、-param='value'と引用符で囲う必要があって若干めんどくさい。

npm run tempalte ~よりもsh scripts/generate_template.sh ~を呼び出すことが多くなるかもしれない。


関連記事
最新記事
プロモーション

This site uses Google Analytics.