Gatsbyの記事テンプレートをシェルスクリプトで作成する
きっかけは怠惰
このブログは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 ~
を呼び出すことが多くなるかもしれない。