Skip to content

최신 버전과 업데이트 로그

현재 메인라인: 4.10.2 (루트 디렉터리의 package.json 참고)

4.10.2 릴리스 요점

이번 버전은 정적 내보내기와 Cloudflare Pages 등 플랫폼에서의 빌드 효율을 중점적으로 개선하고, Giscus 로그인 후 되돌아왔을 때에도 여전히 로그인을 요구하던 문제를 수정했습니다.

빌드 성능 최적화

  • Notion 페이지 본문에 대한 버전화 빌드 캐시를 추가했습니다. 본문 캐시 키에 글의 lastEditedDate가 포함되어, 수정되지 않은 글은 다음 빌드에서 이전 캐시를 그대로 재사용할 수 있습니다.
  • 빌드 시작 시 Notion 데이터베이스 인덱스는 계속 다시 가져와, 새 글·숨김 글·삭제된 글·slug·수정 시간이 제때 반영되도록 합니다.
  • 빌드 정리 전략을 데이터베이스 인덱스, 정적 경로, 현재 빌드 session 등 임시 캐시만 정리하도록 변경하고, 버전화된 page_block 본문 캐시는 기본으로 보존합니다.
  • prefetchAllBlockMaps가 버전화 본문 캐시를 우선 확인하며, 캐시가 적중하면 더 이상 Notion 페이지 본문을 요청하지 않습니다.
  • 단일 글 페이지, 공지 페이지, 전문 검색이 본문 캐시를 읽을 때 버전화 캐시 키를 일관되게 사용해, 프리페치 캐시와 페이지 렌더링 캐시가 불일치하는 문제를 방지합니다.
  • NOTION_BUILD_CACHE_PURGE_DATA=true를 추가해, 빌드 캐시를 완전히 정리해야 할 때 수동으로 켤 수 있습니다.

Giscus 댓글 수정

  • Giscus OAuth 되돌아오기 후 ?giscus=... 파라미터가 페이지 컨테이너에 의해 너무 일찍 정리되던 문제를 수정했습니다.
  • 이제 Giscus 스크립트가 먼저 OAuth 콜백 token을 소비해 localStorage에 기록한 뒤 주소 표시줄 파라미터를 정리하여, 로그인 후에도 "로그인하면 댓글을 달 수 있습니다"가 계속 표시되는 것을 방지합니다.

같은 시기 메인라인 수정

이번 4.10.2 릴리스 창에서는 4.10.1 이후 메인라인에 반영된 여러 수정 사항도 함께 기록합니다.

  • 임베드된 Notion collection view 데이터가 필터링되지 않아 페이지 데이터가 비대해지고 무관한 컬렉션 레코드가 페이지 props로 유출되던 문제를 수정했습니다.
  • Notion 새 구조에서 sync_blockcontent ID 배열 파싱 문제를 수정해, 동기화 블록 내용이 누락되는 것을 방지합니다.
  • properties.title이 없는 quote block의 렌더링 오류를 수정해 Notion 블록 구조 호환성을 높였습니다.
  • 데이터베이스 페이지 파싱에서 짧은 ID / UUID 형식 불일치로 뷰 필터 조건이 작동하지 않던 문제를 수정했습니다.
  • Fuwari 테마 첫 렌더링 시 테마 색상(hue)이 즉시 적용되지 않던 문제를 수정해, 초기 화면 색상이 설정과 불일치하지 않도록 했습니다.
  • Magzine 테마 추천 태그 기본값 처리를 수정해, 추천 태그를 설정하지 않았을 때 추천 로직이 비정상 동작하던 문제를 방지합니다.

적용 상황

  • Cloudflare Pages, Netlify, Vercel 또는 자체 호스팅 CI에서 yarn build / yarn export를 사용하는 경우.
  • 글 수는 많지만 매 릴리스마다 소수의 Notion 페이지만 수정하는 경우.
  • 빌드 로그에 대량의 from:prefetch / getPage 요청이 자주 나타나거나, 배포 시간이 주로 Notion 페이지 본문 가져오기에 소모되는 경우.

사용 안내

  • Cloudflare Pages에서는 Build cache가 켜져 있어야 플랫폼이 다음 빌드에서 .next/cache를 복구할 수 있습니다.
  • 일반적인 경우 새 환경 변수를 설정할 필요가 없습니다.
  • 빌드 캐시가 손상된 것으로 의심되면, NOTION_BUILD_CACHE_PURGE_DATA=true를 임시로 설정하고 한 번 다시 배포하면 영구 본문 캐시를 비울 수 있습니다.

검증

  • npx eslint lib\db\notion\getPostBlocks.js lib\build\prefetch.js lib\db\SiteDataApi.js pages\search\[keyword]\index.js pages\search\[keyword]\page\[page].js next.config.js: 통과.
  • node -e "require('./next.config.js')": 통과.
  • git diff --check: 통과.

업그레이드 방법

전체 이전 버전 기록