Hexo, Icarus 업데이트하기

오랜만에 블로그 글을 쓰려하니 TypeError [ERR_INVALID_ARG_TYPE]: The "mode" argument must be integer. Received an instance of Object 오류가 발생했다. 노드 버전을 낮추면 해결된다는 얘기가 있긴 했는데 굳이 그러고 싶지 않아서 hexo 버전을 업그레이드 하기로 결심.

hexo를 4.2.0에서 5.4.0으로 버전업했지만 위의 에러가 여전히 발생했다.

1
2
3
4
5
FATAL {
err: TypeError [ERR_INVALID_ARG_TYPE]: The "mode" argument must be integer. Received an instance of Object
at copyFile (fs.js:1972:10)
...
}

결국 아래의 블로그를 참고해서 노드 버전을 13.14.0으로 내렸다.

그러자 이번엔 git 인증 문제가 발생

1
2
3
4
5
6
7
8
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
fatal: Authentication failed for 'https://github.com/katie0809/katie0809.github.io/'
FATAL {
err: Error: Spawn failed
at ChildProcess.<anonymous>
...
}

github에서 더이상 아이디/비밀번호 기반 인증을 지원해주지 않는다고 한다. 깃헙 본인 계정에서 사용 가능한 access token을 발급받아 push시에 password 항목에 발급한 토큰을 넣는다. 아래 문서 참조.

그러자 이번엔.. 새 문제가 생겼다 와우! icarus에서 아래와 같은 에러를 뿜어낸다.

1
2
3
4
5
6
ERROR ReferenceError: .../blog-backup/themes/icarus/layout/tag.ejs:11
9| </div>
10| </div>
>> 11| <%- _partial('index', { page }) %>

_partial is not defined

뭐 이런식의 오류를 미친듯이 뿜어낸다. 다시 구글링을 해보니 최신 hexo와 구버전 icarus의 호환문제인 듯 싶었다.

어쩔수없이 icarus도 업데이트 하기로 결심.

기존 theme 백업, 새 icarus 설치

  • 기존에는 icarus 깃 레포를 fork해와 내 블로그 글 백업 레포의 theme 밑에 submodule로 두고 각각 관리했다. 그런데 새 icarus는 npm으로 설치가 가능하다고 하니 일단 기존 폴더를 지우고 다시 설치했다.
  • .gitmodule에서 submodule “theme/icarus” 이쪽을 삭제해준다.
  • icarus 최신 테마를 설치한다. 다음 글을 참고했다. https://skyksit.com/hexo/hexo-icarus-theme/
    • 참고로 hexo config를 사용하려면 관련된 이것저것들을 설치해줘야 했다.
    • hexo-renderer-inferno, hexo-renderer-stylus같은..

icarus 커스텀 설정하기

기타 설정

  • 기본 위젯명이 바뀌었다. category -> categories , tagcloud -> tags
  • 바뀐 위젯명에 맞춰 기존 발행된 포스트의 위젯명을 모두 바꿔줬다.
  • 각 포스트의 설정 키값도 몇개 바뀌었다.
    • 예를들어 thumbnailcoverthumbnail로 나뉘어졌다.
    • 기존처럼 포스트의 제목 상단에 그림을 넣고싶으면 cover 로 넣어줘야 한다.
    • 최근 글 등에 말그대로 썸네일로 보여주고 싶으면 thumbnail에 넣어줘야 한다.

댓글