Hugo 포스트 생성 방법
새 포스트 파일 생성
Hugo에서 게시하는 웹 사이트 포스트는 content
디렉터리에 Markdown 파일로 만든다(예: sample.md
). 포스트 파일은 비어있는 텍스트 파일에서 만들 수 있지만 hugo new
명령을 사용하여 포스트 형태 파일(archetypes/default.md)을 기반으로 Markdown 파일을 자동으로 생성할 수 있다.
포스트 파일(Markdown 파일) 만들기
% hugo new sample.md
Content "/Users/user/my-site/content/sample.md" created
위와 같이 실행하면 content
디렉터리에 sample.md
파일이 생성된다. 작성된 파일의 앞 부분에는, 아래와 같은 머리말(Front matter) 라고 하는 헤더가 작성되어 있다. 이 헤더가 archetypes/default.md
에 기반으로 자동 생성된 것이다.
content/sample.md
---
title: "Sample"
date: 2023-05-05T23:50:09+09:00
draft: true
---
그러고 제목(title
)을 원하는대로 다시 작성하고, Front matter 헤더 이후에 기사의 본문을 작성해 가면 된다. 게시할 수 있는 수준까지 작성이 되었다면, 헤더 부분의 draft: true
행을 삭제한다.
Archetypes
여기서 기반이 되는 archetypes/default.md
파일을 살펴보도록 하자.
archetypes/default.md
---
title: {{ replace .TranslationBaseName "-" " " | title }}"
date: {{ .Date }}
draft: true
---
title
필드에는 hugo new
명령으로 지정한 이름이 자동으로 들어가고, date
필드에는 현재의 시각이 자동으로 들어가게 되어 있다. 이 파일의 내용을 바탕으로 포스트 파일이 작성되고 있는 것을 알 수 있다.
포스트 작성과 동시에 편집기에서 편집 시작
hugo new
명령으로 포스트 파일을 만들 때 --editor
옵션을 지정하면, 포스트 파일 생성과 동시에 지정된 편집기에서 파일을 열 수 있다.
예: 기사 파일을 만들고 vim에서 열기
% hugo new sample.md --editor vim
처음에 실행하면 아래와 에러가 나올 수 있다.
% hugo new sample.md --editor vi
Content "/Users/user/hugo-tutorial/my-site/content/sample.md" created
Editing "/Users/user/hugo-tutorial/my-site/content/sample.md" with "vi" ...
Error: access denied: "vi" is not whitelisted in policy "security.exec.allow"; the current security configuration is:
[security]
enableInlineShortcodes = false
[security.exec]
allow = ['^dart-sass-embedded$', '^go$', '^npx$', '^postcss$']
osEnv = ['(?i)^((HTTPS?|NO)_PROXY|PATH(EXT)?|APPDATA|TE?MP|TERM)$']
[security.funcs]
getenv = ['^HUGO_']
[security.http]
methods = ['(?i)GET|POST']
urls = ['.*']
알려준 메세지 대로 기본 정책을 그래도 복사해서 config.toml
내용에 넣고, allow
배열 항목에 '^vim$'
를 추가한다.
[security]
enableInlineShortcodes = false
[security.exec]
allow = ['^dart-sass-embedded$', '^go$', '^npx$', '^postcss$', '^vim$']
osEnv = ['(?i)^((HTTPS?|NO)_PROXY|PATH(EXT)?|APPDATA|TE?MP|TERM)$']
[security.funcs]
getenv = ['^HUGO_']
[security.http]
methods = ['(?i)GET|POST']
urls = ['.*']
그러고 다시 시도하면 실행이 될 것이다. 단, 포스트 파일이 먼저 생기고, 에디터를 여는 거라서 기존에 파일이 이미 있다는 메세지가 나올수 있다.
% hugo new sample.md --editor vim
Error: /Users/user/hugo-tutorial/my-site/content/sample.md already exists
그러면 기존은 지우고 다시 실행하면 된다.