Lynx 앱에 넣는 인앱 개발자 콘솔(lynx-console)과, 예제 앱 · 문서 사이트를 함께 두는
모노레포예요.
| 경로 | 이름 | 역할 |
|---|---|---|
package/ |
lynx-console |
npm 에 배포하는 라이브러리. tsdown 으로 빌드해요 |
example/ |
lynx-console-test |
예제 앱. rspeedy 로 lynx / web 두 environment 를 빌드하고, example/web 은 브라우저용 <lynx-view> 호스트 셸이에요 |
docs/ |
lynx-console-docs |
Rspress 문서 사이트. 예제 번들을 같이 담아 한 도메인에서 서빙해요 |
저장소 루트에서 실행해요.
yarn build # package 빌드 (다른 빌드보다 먼저 해야 해요)
yarn dev # package watch 빌드
yarn dev:example # 예제 앱 실행 (터미널에 QR 코드가 떠요)
yarn build:example # 예제 번들 빌드 (lynx / web)
yarn dev:docs # 문서 사이트 개발 서버
yarn build:site # 문서 + 데모 전체 빌드 → docs/doc_build
yarn check # biome 검사
yarn format # biome 자동 수정package/dist 는 gitignore 라, 클린 클론에서는 yarn build 를 먼저 돌리지 않으면
lynx-console/setup 을 찾지 못해 예제 빌드가 깨져요.
- 콘텐츠는
docs/src/en·docs/src/ko·docs/src/zh에 세 벌 다 둬요. 한쪽만 고치지 않아요. 중국어는 간체(简体中文)로 써요. - 한국어 문서는 해요체로 써요. 영어를 그대로 옮긴 듯한 문장이나, 코드 스팬 뒤 조사 앞
띄어쓰기(
`foo` 는)를 만들지 않아요. - 기본 언어(en)는 라우트에서
/en접두사가 빠져요. 영문 문서의 내부 링크는/guide/..., 한국어는/ko/guide/..., 중국어는/zh/guide/...로 써요. - 로케일 목록은
docs/siteMeta.mjs의LOCALES한 곳에 있어요. 언어를 추가하면 여기와docs/rspress.config.ts, 홈 컴포넌트의TEXT사전,head-meta.mjs의DEFAULTS를 같이 채워요. .md에서는 raw HTML/JSX 가 렌더되지 않고 사라져요.<a>,<img>, style 객체가 필요하면 파일 확장자를.mdx로 바꿔요.docs/src/public/은 전부 생성물이에요.docs/scripts/sync-demo.mjs가 예제 빌드 산출물과 Lynx Explorer QR 을 만들어 넣어요. 직접 파일을 두지 않아요.- 배포 도메인과 데모 번들 주소는
docs/siteMeta.mjs한 곳에 있어요. - 테마 색과 폰트는
docs/styles/global.css의 CSS 변수로 바꿔요. - 홈은 기본 테마 대신
docs/theme/index.tsx에서HomeLayout을 갈아끼워 그려요. - SEO 메타(canonical · hreflang · og · JSON-LD)는
docs/scripts/head-meta.mjs가 라우트마다 만들어요. sitemap.xml 과 robots.txt 는 빌드 뒤docs/scripts/postbuild.mjs가 써요. - OG 이미지는
docs/assets/og.svg로 만들고, 렌더한og.png를 레포에 커밋해요 (CI 에 폰트가 없어 빌드 타임 렌더는 안 해요).
빌드 설정은 레포가 아니라 Pages 대시보드에 있어요.
| 항목 | 값 |
|---|---|
| Build command | yarn build:site |
| Build output directory | docs/doc_build |
환경변수 ASSET_PREFIX |
https://lynx-console.pages.dev/ |
ASSET_PREFIX 는 빌드 타임에 Lynx 번들에 박혀요. 빠지면 example/lynx.config.ts 의
getLocalIP() 폴백이 들어가 배포본의 async chunk 로딩이 깨져요.
example/lynx.config.ts의source.include에 경로 의존 정규식(/lynx-console/같은)을 쓰지 않아요. 클론 디렉터리 이름에 우연히 매칭돼 로컬만 통과하고 CI 에서 깨져요.path.resolve(__dirname, ...)나[\\/]node_modules[\\/]<pkg>[\\/]형태로 써요.package/**를 고치면 changeset 이 필요해요 (CI 가 검사해요).yarn changeset으로 만들어요.- README 는
package/README.md(en) ·README_ko.md·README_zh.md세 벌이에요. 루트의 같은 이름 파일은 심링크예요. 하나를 고치면 나머지도 맞춰요. - 커밋 메시지는 한국어로 써요.
- Rspress: https://rspress.rs/llms.txt
- Rsbuild: https://rsbuild.rs/llms.txt
- Lynx: https://lynxjs.org