vscode에서 Jekyll 포스트 작성시 템플릿 사용하기
2021, Dec 09
포스트 작성시에 매번 파일을 복사해서 템플릿을 수정하는것이 번거로웠다. 특히 날짜와 시간은 더욱더.
vscode로 글을 작성하기에 extension을 찾아 보았다.
jekyll로 검색하면 jekyll-post이라는 이름이 하나 보인다.
- 장점 : 자동으로 파일명과 날짜, 시간을 채워준다.
- 단점 : .post-template파일 안의 내용까지 원하는대로 변경해주지는 않는다.
나는 타이틀 이미지와 포스트 중간에 들어가는 이미지도 날짜-파일명.png의 규칙으로 사용하기 때문에
파일 안의 날짜, 시간 + 템플릿내용으로 custom하고 싶으니 이건 선택할 수 없다. (github이 있지만 수정해서 사용하는건 귀찮다.ㅠ)
다시 template으로 검색해서 제일 위에 보이는것을 설치한다.
- 장점
- 변수를 통해 내가 원하는 내용을 입력하는대로 매번 파일명, 파일 내용에 적용 가능하다.
- callback 처럼 template.config.js에서 변경될 값을 수정할수도 있다(일부만).
- 단점
- custom값을 입력하는 과정 몇단계가 더 추가된다.
- 파일명에 날짜를 추가할 수 없었다.
설정
- .templates > $$var_POST.md 파일을 만든다.
- 날짜를 var_date, 시각을 var_time이라는 변수명으로 정했다.
- 타이틀 이미지와 반복해서 사용하는 image의 주소를 template에 추가하였다.
---
layout: post
title: 제목
date: var_date var_time
category: [Machine Learning, Svelte, Tools, Web]
author: JayD.Kang
tags: []
summary:
img: posts/var_date-title.png
---
![](/assets/img/posts/var_date-img1.png)
- template.config.js파일을 수정한다.
...
replaceFileTextFn: (fileText, templateName, utils) => {
// @see https://www.npmjs.com/package/change-case
const { changeCase } = utils;
// You can change the text in the file
const datetime = new Date();
const month = `${datetime.getMonth()+1}`.padStart(2, '0');
const date = `${datetime.getDate()}`.padStart(2, '0');
const hour = `${datetime.getHours()}`.padStart(2, '0');
const min = `${datetime.getMinutes()}`.padStart(2, '0');
const dateString = `${datetime.getFullYear()}-${month}-${date}`;
const timeString = `${hour}:${min}`;
return fileText
.replace(/var_date/g, dateString ) //날짜 치환
.replace(/var_time/g, timeString ) //시각 치환
.replace(/__templateName__/g, templateName)
.replace(
/__templateNameToPascalCase__/g,
changeCase.pascalCase(templateName)
)
.replace(
/__templateNameToParamCase__/g,
changeCase.paramCase(templateName)
);
},
...
사용
-
파일을 만들 폴더 위에서 context menu를 열거나
위에서ctrl+shift+P로 command pallete를 열어 template을 입력해서 Template: Create New를 선택한다.
아니면 그냥 단축키 ctrl+alt+T를 눌러도 된다.
※ 확장자 md는 입력하지 않는다. -
그럼 아래와 같이 템플릿이 잘 만들어진다. 이제 글만 잘쓰면 된다.