Files
llm-wiki/raw/official-docs/scaffolding-degit-svelte-github.md

96 lines
7.3 KiB
Markdown

---
title: Rich-Harris/degit — git history 없는 template 클론 도구 (Svelte/SvelteKit 표준)
source_type: official-doc
url: https://github.com/Rich-Harris/degit
archive_url:
status: raw
confidence: high
tags: [ca-tmpl, scaffolding, sample-removal, degit, sveltekit, official-doc]
related_projects: [ca-tmpl]
related_branches: [feature-sample-removal-adoption-contract]
created: 2026-05-22
last_reviewed: 2026-05-27
---
# Rich-Harris/degit — git history 없는 template 클론 도구 (Svelte/SvelteKit 표준)
> Layer: `raw/official-docs/` — `Rich-Harris/degit` GitHub README 발췌. JS 진영의 사실상 표준 scaffolding (SvelteKit `npm create svelte@latest` 가 내부 의존). ca-tmpl Group H — Sample removal / adoption 의 대안 3 (history 없는 단순 clone) 의 1차 근거.
## Parent / 활용 branch (필수)
| Branch | 이 자료가 정당화하는 결정 |
|---|---|
| [[raw/branch-notes/feature-sample-removal-adoption-contract]] | Group H 대안 3 — degit clone 모델이 ca-tmpl 의 "clone 후 removal step" 모델과 비교되는 가장 가벼운 baseline 근거 |
상위 프로젝트: [[raw/project-notes/ca-skeleton-operational-contract]].
## 컨텍스트 / 왜 저장했는지
ca-tmpl sample removal / adoption 결정 대안 3. degit은 "git history 없이 template repo를 그대로 클론"하는 가장 가벼운 scaffolding. Svelte/SvelteKit `npm create svelte@latest`가 내부적으로 의존. ca-tmpl이 "skeleton clone 후 sample 제거 step"을 명시한 것과 달리, degit은 "clone = adoption 끝".
## 출처 / Source
- 원본 URL: https://github.com/Rich-Harris/degit
- 아카이브 URL: (미수집)
- 저자/조직: Rich Harris (Svelte / SvelteKit 작성자)
- Star 수: 7,500+
- 라이선스: MIT
- 마지막 확인일: 2026-05-27
## 핵심 인용 / Key quotes (verbatim)
> [§README — Definition] "Straightforward project scaffolding. degit makes copies of git repositories. When you run degit some-user/some-repo, it will find the latest commit on https://github.com/some-user/some-repo and download the associated tar file to ~/.degit/some-user/some-repo/commithash.tar.gz if it doesn't already exist locally."
> [§README — Speed] "This is much quicker than using git clone, because you're not downloading the entire git history."
> [§README — No history] "Unlike git clone, it doesn't pull down the entire commit history."
> [§README — References] "You can use any tag, branch or commit reference."
## Claims Extracted / 추출된 주장
| Claim ID | Claim (이 자료가 직접 말하는 것) | Evidence quote | Strength | Applies to | Does not prove |
|---|---|---|---|---|---|
| SCAF-DG-C1 | degit 은 "straightforward project scaffolding" 으로, git repository 의 복사본을 만들며 `degit some-user/some-repo` 실행 시 GitHub 상 최신 commit 의 tar 파일을 `~/.degit/<user>/<repo>/<hash>.tar.gz` 로 다운로드 (캐시) | [§README — Definition] "Straightforward project scaffolding. degit makes copies of git repositories. When you run degit some-user/some-repo, it will find the latest commit on https://github.com/some-user/some-repo and download the associated tar file to ~/.degit/some-user/some-repo/commithash.tar.gz if it doesn't already exist locally." | `official-vendor-doc` | template 저장소 clone (history 불필요) | private repo / 인증된 endpoint 에서도 동일하게 동작한다는 뜻은 아님 (인용은 public GitHub 경로 한정) |
| SCAF-DG-C2 | degit 은 git history 전체를 다운로드하지 않으므로 `git clone` 보다 훨씬 빠르다 | [§README — Speed] "This is much quicker than using git clone, because you're not downloading the entire git history." | `official-vendor-doc` | 큰 repo / 반복 scaffolding 시 속도 이득 평가 | 모든 네트워크 환경에서 "much quicker" 의 정량적 차이가 동일하다는 뜻은 아님 |
| SCAF-DG-C3 | `git clone` 과 달리 degit 은 전체 commit history 를 가져오지 않는다 | [§README — No history] "Unlike git clone, it doesn't pull down the entire commit history." | `official-vendor-doc` | template 으로부터 history 없는 새 프로젝트 초기화 | degit 결과 디렉토리가 `.git/` 을 포함한다는 뜻은 아님 — 별도 `git init` 필요 |
| SCAF-DG-C4 | degit 은 tag / branch / commit reference 를 사용할 수 있다 | [§README — References] "You can use any tag, branch or commit reference." | `official-vendor-doc` | 특정 버전의 template snapshot 으로 clone | semver range / dynamic resolution 같은 패키지 매니저 수준의 reference 해석을 지원한다는 뜻은 아님 |
## Usage Boundaries / 적용 경계
- **이 자료가 직접 증명하는 것**:
- `SCAF-DG-C1`: degit 의 정의 + 캐시 경로 동작 모델
- `SCAF-DG-C2`: `git clone` 대비 속도 우위 (history 미다운로드)
- `SCAF-DG-C3`: 결과물이 commit history 를 포함하지 않는다는 사실
- `SCAF-DG-C4`: tag / branch / commit reference 지원
- **이 자료가 증명하지 않는 것**:
- degit 이 변수 치환 / placeholder rename 을 지원한다는 뜻 아님 (단순 복제)
- SvelteKit `npm create svelte@latest` 가 내부 의존이라는 사실 — 본 README 인용에 명시되지 않음 (외부 지식)
- ca-tmpl 의 sample-on / sample-off matrix 가 degit 만으로 자동화된다는 뜻은 아님 (외부 script 결합 필요)
- degit 자체가 sample 제거 / 7-step adoption checklist 항목을 자동화한다는 뜻은 아님
- **내 프로젝트에 적용하려면 추가 확인이 필요한 것**:
- ca-tmpl + degit 조합 시 sample-ticket 제거를 자동화할 별도 script (예: `npx degit ... && bash remove-sample.sh`) 의 위치 / 책임 분담
- private GitHub repo (사내 ca-tmpl) 에서의 degit 인증 메커니즘
- degit 결과 디렉토리에 `git init` 을 자동으로 붙일지 vs 사용자에게 위임할지
## 메모
- 동작: `degit user/repo dest` → tarball 다운로드 → 디렉토리에 압축 해제. `.git/` 없음.
- ca-tmpl과의 차이: degit은 "template 코드를 그대로 복제"하므로 sample-ticket까지 복제됨 → ca-tmpl 2-step removal(profile toggle → package remove)이 그대로 필요. degit은 removal을 자동화하지 않음.
- 강점: scaffolding 자체는 매우 단순 (1 command). ca-tmpl이 degit + 별도 removal script 조합으로 가는 길 가능.
- 약점: 변수 치환·옵션 분기가 없음. Cookiecutter/Yeoman 같은 generator 기능 부재. ca-tmpl 7-step adoption checklist는 외부 도구 또는 수동.
- dual-mode CI matrix와 호환성: 무관. degit은 단순 복제기.
- 신뢰도: Svelte/SvelteKit 공식 scaffolding이 의존하는 도구. JavaScript 진영에서 사실상 표준. official-doc 등급.
## Related / 관련
- 같은 주제 다른 official-doc (Group H — Sample removal / adoption 대안 5종):
- [[raw/official-docs/scaffolding-spring-initializr]] — 대안 4 (Spring Initializr)
- [[raw/official-docs/scaffolding-cookiecutter-official]] — 대안 2 (Cookiecutter)
- [[raw/official-docs/scaffolding-github-template-repository]] — 대안 5 (GitHub Template Repository)
- 인용하는 branch:
- [[raw/branch-notes/feature-sample-removal-adoption-contract]]
- canonical contract 섹션:
- [[raw/project-notes/ca-skeleton-operational-contract#Sample Removal / Project Adoption]]
- 인용하는 wiki: (미작성)