최신 버전과 업데이트 로그
현재 메인라인: 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_block의contentID 배열 파싱 문제를 수정해, 동기화 블록 내용이 누락되는 것을 방지합니다. 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: 통과.
업그레이드 방법
- 사이트 관리자: 버전 업그레이드 안내를 참고하세요.
- 빌드 성능과 Notion API 제한: 빌드 성능과 Notion API 제한을 참고하세요.
- GitHub Release: NotionNext Releases.
