구성
룬아리아는 기본 동작을 광범위하게 사용자 정의할 수 있습니다. 이 참조 문서는 lunaria.config.json 파일 내에서 사용 가능한 모든 옵션을 설명합니다.
{ "$schema": "./node_modules/@lunariajs/core/config.schema.json"}상위 레벨 옵션
repository (필수)
형식: Repository
대시보드에 표시될 Git 호스팅 링크를 구성합니다. 예상되는 속성은 다음과 같습니다:
name— Git 호스팅 플랫폼에서의 저장소 고유 이름, 예:'yanthomasdev/lunaria'.branch— 콘텐츠를 추적하는 저장소의 브랜치 이름으로, 기본값은'main'.rootDir— 멀티레포(모노레포)를 사용하는 경우 프로젝트의 루트 디렉터리, 예:'docs'.hosting— 사용 중인 Git 호스팅 플랫폼, 예:'github'또는'gitlab'.
Repository
type Repository = { name: string; branch: string; rootDir?: string; hosting: 'github' | 'gitlab';};defaultLocale (필수)
형식: { label: string; lang: string }
프로젝트의 기본 지역 설정을 지정합니다. 소스 콘텐츠가 어디에서 왔는지를 나타냅니다.
label은 지역의 표시 이름(예: "English")이며, lang는 BCP-47 태그 또는 추적 파일 경로에서 사용되는 지역 식별 코드(예: "en")입니다.
{ "defaultLocale": { "label": "영어", "lang": "en" }}locales (필수)
형식: { label: string; lang: string }[]
프로젝트의 로컬라이제이션을 위한 모든 지역 설정을 지정합니다. 각 항목은 defaultLocale와 동일한 서명을 따릅니다.
{ "locales": [ { "label": "스페인어", "lang": "es" }, { "label": "포르투갈어", "lang": "pt" } ]}files (필수)
형식: File[]
대시보드에서 추적할 파일을 구성합니다.
files 내 항목의 순서는 대시보드에서 표시될 순서대로 존중됩니다. 각 항목은 다음 속성을 가져야 합니다:
location— 추적할 파일의 글로브 패턴, 예:'src/content/docs/**/*.mdx'.ignore— 추적에서 무시할 글로브 패턴 배열, 기본값은['node_modules'].pattern— 파일 경로에 대한 path-to-regexp 패턴, 예:'src/content/docs/@lang/@path'(@lang및@path는 룬아리아에서 제공하는 커스텀 구문이며, 더 복잡한 경우 일반:lang및:path매개변수로 변경 가능).
파일 유형
files의 각 항목은 type 속성이 포함되어야 하며, 이는 추적 시스템 작동 방식, 대시보드에서 파일 표시 방식, 그리고 새로운 속성 추가 여부를 결정합니다.
universal
universal 파일 유형은 단지 Git 이력만 기반으로 파일 상태를 추적하며, 어떤 파일 확장자라도 허용합니다.
{ "files": [ { "location": "**/*.md", "pattern": "@lang/@path", "type": "universal" } ]}dictionary
일반적인 Git 이력 추적 외에도, dictionary 파일 유형은 키 완성 확인을 수행합니다: 원본 사전 내 각 키는 로컬라이제이션에 존재해야 완료된 것으로 표시됩니다.
지원되는 파일 확장자: json, yml, md, markdown, mdx, mdoc, js, cjs, mjs, ts, cts, mts.
로컬라이제이션에서 키가 누락되면, 해당 지역의 대시보드 세부 정보에는 그 키들이 누락되었음을 알리는 접기 가능한 목록이 포함됩니다.
추가 optionalKeys 속성을 통해 키를 선택 사항으로 만들 수 있습니다. 각 optionalKeys 키는 공유 경로와 함께 선택 사항으로 간주될 사전 키 배열을 포함합니다.
{ "files": [ { "location": "ui/**/*.{json,yml}", "pattern": "ui/@lang/@path", "type": "dictionary", "optionalKeys": { "ui/nav.json": ["footer", "sidebar"], "ui/ui.yml": ["search"] } } ]}File
type File = { location: string; ignore: string[]; pattern: string;} & ( | { type: 'universal' } | { type: 'dictionary'; optionalKeys?: Record<string, string[]> });ignoreKeywords
형식: string[]
기본값: ['lunaria-ignore', 'typo 수정']
룬아리아가 자동으로 무시하고 상태 변경을 트리거하지 않도록 할 커밋 제목 내 키워드 목록입니다. 기본적으로 lunaria-ignore 또는 fix typo를 포함하는 모든 커밋은 무시됩니다.
빈 배열([])을 제공하면 이 기능을 비활성화하거나, 사용자만의 키워드로 재정의할 수 있습니다.
{ "ignoreKeywords": ["i18nIgnore", "영어 전용"]}localizableProperty
형식: string
파일을 로컬라이제이션 가능한지 여부를 결정하는 부속 정보(프론트마터) 속성의 이름, 값은 부울 형식입니다.
해당 속성이 없거나 false로 발견된 파일은 추적되지 않으며, true로 설정된 파일은 추적됩니다. 만약 파일에서 부울이 아닌 값을 발견하면 오류가 발생합니다.
프론트마터를 지원하지 않는 파일의 경우 이 옵션은 무시되며, 파일이 로컬라이제이션 가능하다고 간주됩니다.
파일 형식이 프론트마터 메타데이터를 지원하는 경우(예: 마크다운, MDX, YAML) 점진적으로 파일을 로컬라이제이션 가능하도록 만들고자 할 때 이 옵션을 권장합니다. 특정 파일이 절대 로컬라이제이션되지 않을 것으로 예상된다면 처음부터 추적하지 않는 것이 좋습니다.
{ "localizableProperty": "l10n 준비 완료"}outDir
형식: string
기본값: './dist/lunaria'
lunaria build 명령어가 최종 대시보드와 상태를 작성할 디렉터리입니다.
기대되는 값은 프로젝트 루트로부터의 상대 경로입니다.
{ "outDir": "./lunaria"}cloneDir
형식: string
기본값: './node_modules/.cache/lunaria/history'
얕은 저장소를 사용할 때 룬아리아가 임시 Git 이력을 저장할 디렉터리입니다.
기대되는 값은 프로젝트 루트로부터의 상대 경로입니다.
{ "cloneDir": "./lunaria/history"}renderer
형식: string
대시보드 렌더러 구성이 포함된 .(c/m)js 또는 .(c/m)ts 파일의 경로입니다.
기대되는 값은 프로젝트 루트로부터의 상대 경로입니다.
{ "renderer": "./renderer.config.ts"}대시보드 옵션
dashboard.title
형식: string
기본값: '로컬라이제이션 상태'
대시보드의 제목을 정의하며, 대시보드의 제목 및 메타 태그에서 사용됩니다.
{ "dashboard": { "title": "내 프로젝트의 로컬라이제이션 상태" }}dashboard.description
형식: string
기본값: '프로젝트의 온라인 로컬라이제이션 상태 대시보드'
대시보드의 설명을 정의하며, 대시보드의 메타 태그에서 사용됩니다.
{ "dashboard": { "description": "내 프로젝트의 로컬라이제이션 상태 대시보드" }}dashboard.site
형식: string
배포된 대시보드의 URL을 정의하며, 대시보드의 메타 태그에서 사용됩니다.
{ "dashboard": { "site": "https://localization.lunaria.dev/" }}dashboard.basesToHide
형식: string
생성된 대시보드의 링크에서 생략할 경로 기준 목록입니다.
추적 파일의 링크가 디렉터리 구조 내 깊숙이 있는 경우(예: src/content/docs/file.mdx), 더 단순화된 링크 레이블(예: file.mdx)을 표시하는 것이 유익할 수 있습니다.
{ "dashboard": { "basesToHide": ["src/content/docs/"] }}dashboard.customCss
형식: string
대시보드에 인라인될 외부 .css 파일의 상대 경로 목록입니다.
{ "dashboard": { "customCss": ["./lunaria/css/theme.css", "./lunaria/css/custom.css"] }}dashboard.favicon
형식: Favicon
생성된 대시보드의 파비콘을 정의합니다.
external은 다음 속성을 가진 외부 파비콘 배열을 허용합니다:
link— 외부 파비콘의 URL, 예:'https://lunaria.dev/favicon.svg'.type— 외부 리소스의 MIME 타입, 예:'image/svg+xml'.
inline은 대시보드에 인라인될 .svg 파일의 상대 경로를 허용합니다, 예: './lunaria/favicon.svg'.
{ "dashboard": { "favicon": { "external": [ { "link": "https://lunaria.dev/favicon.svg", "type": "image/svg+xml" } ], "inline": "./lunaria/favicon.svg" } }}Favicon
type Favicon = { external?: { link: string; type: string }[]; inline?: string;};dashboard.ui
형식: Record<string, string>
대시보드의 사용자 인터페이스 문자열을 정의합니다. 특히 lang와 dir 키는 생성된 대시보드에서 사용되는 같은 이름의 HTML 속성과 관련이 있으며, 다른 키들은 페이지의 사용자 인터페이스를 직접 변경합니다.
다음 코드 샘플은 dashboard.ui의 모든 키와 기본값을 포함하고 있습니다:
{ "dir": "ltr", "lang": "en", "status.emojiDone": "✔️", "status.emojiMissing": "❌", "status.emojiOutdated": "🔄", "status.done": "완료됨", "status.missing": "누락됨", "status.outdated": "노출됨", "statusByFile.heading": "파일별 로컬라이제이션 상태", "statusByFile.tableRowFile": "파일", "statusByFile.tableSummaryFormat": "{missing_emoji} {missing_word} {outdated_emoji} {outdated_word} {done_emoji} {done_word}", "statusByLocale.completeLocalization": "이 로컬라이제이션이 완료되었습니다! 멋진 일입니다! 🎉", "statusByLocale.createFileLink": "파일 만들기", "statusByLocale.detailsSummaryFormat": "{done_amount} {done_word}, {outdated_amount} {outdated_word}, {missing_amount} {missing_word}", "statusByLocale.detailsTitleFormat": "{locale_name} ({locale_tag})", "statusByLocale.heading": "지역별 로컬라이제이션 진행률", "statusByLocale.outdatedLocalizationLink": "노출된 로컬라이제이션", "statusByLocale.sourceChangeHistoryLink": "원본 변경 이력", "statusByLocale.incompleteLocalizationLink": "불완전한 로컬라이제이션", "statusByLocale.missingKeys": "누락된 키"}일부 사용자 인터페이스 문자열 키는 Format으로 끝나며, 중괄호 안에 동적으로 삽입된 텍스트(때때로 다른 사용자 인터페이스 문자열에서 나옴)를 포함합니다, 예: {locale_name}. 필요에 따라 순서를 변경하거나 제거할 수 있습니다.