본문으로 건너뛰기

Config API

import { defineConfig, loadConfig } from "@noxion/core";

defineConfig()

noxion.config.ts 작성을 위한 타입 헬퍼입니다. 입력을 그대로 반환하므로 에디터 타입 추론을 제공합니다.

시그니처

function defineConfig(input: NoxionConfigInput): NoxionConfigInput

파라미터

속성타입필수기본값설명
rootNotionPageIdstring*루트 Notion 데이터베이스 페이지 ID. collections가 설정되지 않은 경우 필수.
namestring사이트 이름
domainstring프로토콜 없는 프로덕션 도메인
authorstring기본 작성자 이름
descriptionstring사이트 설명
collectionsNoxionCollection[]undefined멀티 데이터베이스 설정
defaultPageTypestring"blog"단일 데이터베이스 모드의 기본 페이지 타입
rootNotionSpaceIdstringundefinedNotion 워크스페이스 ID
languagestring"en"BCP 47 언어 태그
defaultThemeThemeMode"system"초기 색상 모드
revalidatenumber3600ISR 재검증 간격 (초)
revalidateSecretstringundefined온디맨드 재검증 시크릿
pluginsPluginConfig[]undefined활성화할 플러그인

defineConfig이 하는 일

  • 설정 필드에 대한 컴파일 타임 타입 체크를 제공합니다.
  • 입력 객체를 그대로 반환합니다.
  • 런타임 기본값 적용/검증은 수행하지 않습니다.

런타임 기본값 적용/검증은 loadConfig(input)에서 수행됩니다.

단일 데이터베이스 모드

export default defineConfig({
rootNotionPageId: process.env.NOTION_PAGE_ID!,
name: "My Blog",
domain: "myblog.com",
author: "Jane Doe",
description: "A blog about web development.",
plugins: [createRSSPlugin({ feedPath: "/feed.xml" })],
});

멀티 데이터베이스 모드

export default defineConfig({
name: "My Site",
domain: "mysite.com",
author: "Jane Doe",
description: "Blog, docs, and portfolio.",
collections: [
{ databaseId: process.env.NOTION_PAGE_ID!, pageType: "blog" },
{ databaseId: process.env.DOCS_NOTION_ID!, pageType: "docs", pathPrefix: "docs" },
{ databaseId: process.env.PORTFOLIO_NOTION_ID!, pageType: "portfolio", pathPrefix: "portfolio" },
],
});

loadConfig()

NoxionConfigInput을 검증하고 기본값이 적용된 NoxionConfig를 반환합니다.

시그니처

function loadConfig(input: NoxionConfigInput): NoxionConfig

런타임 동작

  • rootNotionPageIdcollections가 모두 없으면 에러를 던집니다.
  • name, domain 등 필수 필드가 없으면 에러를 던집니다.
  • language, defaultTheme, defaultPageType, revalidate 기본값을 적용합니다.
  • rootNotionPageId만 제공되면 기본 collections 항목을 생성합니다.

사용법

loadConfig()는 생성된 lib/config.ts 내부에서 호출됩니다:

// lib/config.ts (create-noxion이 생성)
import { loadConfig } from "@noxion/core";
import noxionConfigInput from "../noxion.config";

export const siteConfig = loadConfig(noxionConfigInput);

NoxionCollection

interface NoxionCollection {
name?: string;
databaseId: string;
pageType: string;
pathPrefix?: string;
schema?: Record<string, string>;
}
필드타입필수설명
namestring컬렉션 표시 이름
databaseIdstringNotion 데이터베이스 페이지 ID
pageTypestring페이지 타입: "blog", "docs", "portfolio", 또는 커스텀
pathPrefixstringURL 접두사 (예: "docs"/docs/[slug])
schemaRecord<string, string>기본 속성 이름 매핑 오버라이드

전체 타입 레퍼런스는 타입을 참조하세요.