為什麼要多新增這個 Makefile 呢?因為我懶。

每次 run server 都要想:

「痾…我今天在 run go 還是 run python?」

  • go 的話: go run .

  • python 的話: python3 main.py

啊都不是,我在 run hugo:hugo server -D

那個導頁到最近變更頁面的指令是什麼?

hugo server --navigateToChanged

太煩了吧!腦子要用來想重要的事情,不是這些事情 XD

所以我們來把指令變簡單:

  1. 你不用再記一堆有的沒的, run server 就下 make server管他今天 run 的是什麼

  2. 把大腦用於重要決策,例如想文章名稱,你只要make {主題} {文章名},不用再hugo new content content/posts/{主題}/{文章名}/index.md --kind {主題}

    你打完上面那串,文章都不想寫了。

  3. 在文章前多加上 date,方便管理文章排序

建立 Makefile

為達成以上目標,我們用 Makefile 來管理,他的好處就是可以把多種指令都包在一個檔案裡面,如果今天是寫 scritp 的話,每個指令都要一個 scritp 檔,但我們指令基本上都很簡單,所以寫在一起就好。

Makefile 的用法就是可以讓你在終端機下 make …

makefile.png

  1. 在你的資料夾下新增 Makefile

    makefile2.png

  2. copy paste 下面的 code 到你的 file 裏面

    
    .PHONY: tech life books server draft clean # 改這裡
    
    # 定義可用的類別
    CATEGORY_NAME = tech life books #改成你的分類
    
    # 創建新文章
    $(CATEGORY_NAME):
    	@date=$$(date "+%F"); \
    	if [ -z "$(POST_NAME)" ]; then \
    		post_path="content/posts/$@/$$date"; \
    	else \
    		post_path="content/posts/$@/$$date-$(POST_NAME)"; \
    	fi; \
    	hugo new "$$post_path/index.md" --kind $@ # kind 定義在 archetypes
    
    # 啟動開發伺服器(包含草稿)
    server:
    	hugo server -D --navigateToChanged
    
    # 啟動開發伺服器(不包含草稿)
    prod:
    	hugo server --navigateToChanged
    
    # 清理生成的文件
    clean:
    	rm -rf public/
    	rm -rf resources/
    
    # 顯示幫助信息
    help:
    	@echo "Available commands:"
    	@echo "Categories: $(CATEGORY_NAME)"
    	@echo "  make CATEGORY POST_NAME=<name> - Create a new post in category"
    	@echo "  make server                    - Start development server (with drafts)"
    	@echo "  make prod                      - Start production server (without drafts)"
    	@echo "  make clean                     - Clean generated files"
    	@echo ""
    	@echo "Examples:"
    	@echo "  make tech POST_NAME=my-post    - Create a new tech post named 'my-post'"
    	@echo "  make tech                      - Create a new tech post with date only"
    

    .PHONY 後面的字可以自定義,到時候你就是在終端機下,你 PHONY 後面有列的字,例如我的就是

    • make life

    • make tech

    • make books

    你如果要 make {你的主題名稱 1},就是

    .PHONY: 你的主題名稱1 你的主題名稱2 你的主題名稱3 server draft clean
    

    小注意,我在指令有加 --kind,你如果沒有定義 archetypes 檔案的話要拿掉

    archetypes.png

    創建新文章要改成這樣

    # 創建新文章
    $(CATEGORY_NAME):
    	@date=$$(date "+%F"); \
    	if [ -z "$(POST_NAME)" ]; then \
    		post_path="content/posts/$@/$$date"; \
    	else \
    		post_path="content/posts/$@/$$date-$(POST_NAME)"; \
    	fi; \
    	hugo new "$$post_path/index.md"
    

    想要知道 archetypes 設定 —-kind 的可以參考這一篇 《archetypes》

  3. 恭喜完成拉,可以在終端機下 make … 惹 🎉

1. 建立文章指令

現在你要新增文章,就只要下:make {你的主題名稱} POST_NAME={你的文章名稱}

(文章名稱這裡設定 optional,可不填,因為每天寫日記有時候不想想標題)

ex:

make life POST_NAME=amu

make post.png

2. 啟動 Server、run draft(草稿文)並導到最新修改頁面的指令

make server

3. 啟動 Server 並導到最新修改頁面的指令

make prod

4. 清除 public、resource 資料夾的指令

make clean

這個會需要,是因為我有時候更新圖片,重新 run server,他還是會吃到舊的圖片,刪掉重新產才會好,但我還沒研究為什麼,就先降吧~

恭喜完成設定,space 腦袋去做其他事情吧寶貝們。