검색 K
밝은/어두운 배경
밝은/어두운 배경
게시물 정보
package.json · tsconfig.json · .markdownlint.json 설정 파일에 대해 설명합니다.
package.json — 스크립트 명령어 | 명령어 | 설명 |
|---|---|
pnpm dev | VitePress 개발 서버 실행 (docs/ 기준) |
pnpm build | VitePress 정적 빌드 |
pnpm build:full | prebuild → build → pagefind 전체 빌드 |
pnpm serve | 전체 빌드 후 미리보기 |
pnpm rss:dev | .env.development 로드 후 스크래퍼 실행 (로컬 개발) |
pnpm api:dev | .env.development 로드 후 API 서버 실행 (로컬 개발) |
pnpm reminder:dev | .env.development 로드 후 재알림 스크립트 실행 |
| 명령어 | 사용 워크플로우 | 설명 |
|---|---|---|
pnpm rss:env scrape | rss-scraper.yml | 환경 변수를 외부(Actions Secrets)에서 주입받아 스크래퍼 실행 |
pnpm reminder | send-reminders.yml | 환경 변수를 외부에서 주입받아 재알림 스크립트 실행 |
rss:dev와 rss:env의 차이는 환경 변수 로딩 방식입니다. rss:dev는 --env-file=.env.development 옵션으로 파일에서 로드하고, rss:env는 외부에서 주입된 환경 변수를 그대로 사용합니다.
.env.development ← rss:dev, api:dev, reminder:dev 가 읽는 파일.env.development 파일 예시:
DATABASE_URL=postgresql://...@...neon.tech/...?sslmode=require
RESEND_API_KEY=re_...
ADMIN_EMAIL=admin@example.com
REVIEW_BASE_URL=http://localhost:3001
GH_REPO=owner/repo
GH_TOKEN=ghp_...주의:
.env.development는.gitignore에 반드시 포함해야 합니다. 실제 Secrets가 저장소에 노출되지 않도록 합니다.
pnpm prebuild: node fix-imports.js를 실행합니다. VitePress 빌드 전 import 경로를 보정하는 스크립트입니다.
pnpm pagefind: 빌드 결과물을 기반으로 전문 검색 인덱스를 생성합니다. vitepress-plugin-pagefind와 연동됩니다.
pnpm build:full: 위 세 단계를 순서대로 실행합니다. 프로덕션 빌드 시 사용합니다.
tsconfig.json — TypeScript 설정 | 옵션 | 값 | 의미 |
|---|---|---|
target / module | esnext | 최신 ES 문법 사용 |
moduleResolution | bundler | .ts 확장자 import 허용 (allowImportingTsExtensions: true) |
noEmit | true | 타입 검사만 수행, 컴파일 출력 없음 |
strict | true | 엄격 타입 검사 활성화 |
include 범위 "include": [
"docs/.vitepress/composables/",
"docs/.vitepress/components/",
"docs/.vitepress/theme/",
"docs/.vitepress/env.d.ts",
"api/",
"scripts/"
]scraper/는 include에 포함되지 않습니다. 스크래퍼는 tsx 또는 node --experimental-strip-types로 직접 실행되며, 별도 타입 검사 대상으로 지정되지 않았습니다.
⚠ TODO:
scraper/가tsconfig.jsoninclude에서 제외되어 있어 IDE에서 타입 오류가 표시되지 않을 수 있습니다. 의도된 구성인지 확인 필요.
.markdownlint.json — Markdown 린트 설정 VitePress 문서의 Markdown 파일에 적용되는 린트 규칙입니다. 다수의 규칙을 비활성화하여 VitePress 커스텀 문법(:::tip, <Img> 등)과의 충돌을 방지합니다.
| 규칙 | 기본 내용 | 비활성화 이유 |
|---|---|---|
MD013 | 줄 길이 제한 | 긴 URL·표 셀 허용 |
MD024 | 중복 헤딩 금지 | 월별 파일에서 동일 헤딩 반복 허용 |
MD033 | 인라인 HTML 금지 | <Img> 등 VitePress 커스텀 컴포넌트 허용 |
MD034 | 베어 URL 금지 | RSS URL 직접 표기 허용 |
MD041 | 첫 줄 h1 강제 | frontmatter로 시작하는 파일 허용 |
MD051 | 링크 프래그먼트 검증 | VitePress 라우팅 방식과 충돌 방지 |
이 프로젝트는 pnpm 11.5.1을 사용합니다. packageManager 필드에 고정되어 있어 다른 버전을 사용하면 경고가 발생할 수 있습니다.
---
date: 2026-06-08
writers: claude.ai
description: pnpm 설치 (corepack 사용)
pageClass: sysDocs
tags:
- 기술 문서
- 운영 매뉴얼
- claude.ai
- pnpm 설치 (corepack 사용)
---
# pnpm 설치 (corepack 사용)
<div aria-hidden="true" class="aria-hidden">
:::info 게시물 정보
- 작성일: <Date />
- 글쓴이: <Writers />
- 주제어: <TagLinks />
:::
</div>
corepack enable
corepack prepare pnpm@11.5.1 --activate의존성 설치 시 반드시 pnpm install --frozen-lockfile을 사용합니다. 이는 pnpm-lock.yaml을 변경하지 않고 정확히 동일한 버전을 설치합니다. 워크플로우도 이 방식을 사용합니다.
| 패키지 | 분류 | 용도 |
|---|---|---|
vitepress | devDependencies | 정적 사이트 생성 |
fast-xml-parser | devDependencies | RSS XML 파싱 |
express | devDependencies | 로컬 API 서버 |
@neondatabase/serverless | dependencies | Neon DB 연결 |
bcrypt | dependencies | 비밀번호 해시 |
p-limit | dependencies | 병렬 처리 제한 |
resend | dependencies | 이메일 발송 |