---
title: "명령어 — zenit Zig UI 문서"
description: "빌드, 예제, 테스트, 코드 생성, 품질 검사 명령을 한곳에서 확인합니다."
url: https://zenit.z.express/ko/docs/reference/commands
language: ko
alternate_en: https://zenit.z.express/docs/reference/commands.md
alternate_zh: https://zenit.z.express/zh/docs/reference/commands.md
alternate_es: https://zenit.z.express/es/docs/reference/commands.md
alternate_ja: https://zenit.z.express/ja/docs/reference/commands.md
alternate_fr: https://zenit.z.express/fr/docs/reference/commands.md
alternate_de: https://zenit.z.express/de/docs/reference/commands.md
project: zenit v0.1.0-alpha (Zig 0.15.2, macOS)
source: https://github.com/version-next/zenit
---

# 명령어 요약

빌드, 예제, 테스트, 코드 생성, 품질 검사 명령을 한곳에서 확인합니다.

## 앱 프로젝트

아래 step은 템플릿의 `templates/minimal-app/build.zig`에서 가져온 것입니다. `app` step은 macOS 타깃에서만 등록됩니다.

```sh
zig build                      # build the executable
zig build run                  # build and run
zig build app                  # package a macOS .app bundle (zig-out/)
zig build -Dtest-mode=true     # enable the automation harness (forwarded to zenit)
```

## zenit 저장소 예제

모든 예제에는 두 가지 step이 있습니다. `zig build <name>`는 ad-hoc 서명된 `.app`을 생성하고, `zig build run-<name>`는 실행 파일을 바로 실행합니다.

| Step | .app 이름 | 내용 |
| --- | --- | --- |
| `hello-button` | Hello Button | 최소 창과 버튼 |
| `counter-reactive` | Reactive Counter | Signal / Memo / Effect 데모 |
| `virtual-list-perf` | 100k Virtual List | 10만 행 VirtualList 스트레스 테스트 |
| `text-input` | Text Input Demo | Input / Textarea와 text\_core 통합 |
| `multi-window` | Multi Window | 두 개의 네이티브 창, 창별 라우팅 |
| `storybook` | zenit Storybook | 전체 컴포넌트 쇼케이스이자 e2e 대상 |
| `devtools-probe` | DevTools Probe | DevTools 성능 패널 실제 창 검증 |
| `interop-probe` | zenit Interop Probe | 리치 클립보드 / 드래그 아웃 시스템 수준 검증 |
| `console-probe` | Console Probe | Console + DevTools 실제 창 검증 |
| `design-probe` | Design Probe | 디자인 시안 비교용 대상 |

```sh
zig build run-hello-button
zig build run-counter-reactive
zig build run-storybook
```

## 테스트

### 스위트

| 명령 | 역할 |
| --- | --- |
| `test` | test-headless의 별칭 |
| `test-headless` | 결정적 테스트, 실제 Metal 장치 불필요 |
| `test-all` | 결정적 테스트 + 실제 장치가 필요한 Metal 테스트 |
| `test-null-backend` | Null GPU 백엔드로 결정적 테스트를 빌드·실행해 RHI 추상화를 검증 |

### UI와 반응성

| 명령 | 역할 |
| --- | --- |
| `test-ui` | UI 시스템 테스트. -Dtest-filter=<substring>로 이름이 일치하는 것만 실행 |
| `test-ui-core` | ui\_core 통합 테스트 (src/ui/core/tests.zig) |
| `test-reactive` | 반응형 시스템 테스트 |
| `test-allocation-campaign` | 트랜잭션 프레임워크 경계에서 할당 실패 지점을 하나씩 주입 |

### 렌더링과 GPU

| 명령 | 역할 |
| --- | --- |
| `test-render` | render 모듈 테스트 |
| `test-gpu` | GPU 추상화 계층 테스트 |
| `test-metal` | 실제 Metal 장치가 필요한 테스트 |
| `test-svg` | SVG 파서 / 래스터라이저 테스트 |
| `test-timing-ring` | 프레임 타이밍 링 테스트 |

### 텍스트와 국제화

| 명령 | 역할 |
| --- | --- |
| `test-text` | text 모듈 테스트 (폰트 카탈로그 / 굵기) |
| `test-text-core` | text\_core 모듈 테스트 |
| `test-text-properties` | 시드 지정 가능한 결정적 텍스트 좌표 속성 테스트 |
| `test-i18n` | i18n 모듈 테스트 |
| `test-bidi-conformance` | 전체 Unicode 17.0.0 UAX #9 적합성 데이터 |

### 플랫폼, 창, 패키징

| 명령 | 역할 |
| --- | --- |
| `test-window-lifecycle` | 결정적 멀티 창 생명주기 및 라우팅 테스트 |
| `test-text-hook-owners` | 프로세스 전역 텍스트 측정 훅 소유 스택 (창 하나를 닫아도 다른 창의 훅은 유지) |
| `test-selector-scale` | HiDPI FontSelector 배율 전파 |
| `test-system-sdk` | System SDK 테스트 |
| `test-system-sdk-backends` | 결정적 네이티브 백엔드 테스트 |
| `check-system-sdk-cross` | Linux / Windows용 System SDK 테스트 컴파일 (실행 안 함) |
| `test-harness` | test\_harness (file-RPC) 테스트 |
| `test-package-consumer` | 직접 패키지와 Zig 필터링 패키지 두 방식으로 다운스트림 앱을 빌드·실행 |

## 코드 생성과 도구

| 명령 | 역할 |
| --- | --- |
| `bench` | 성능 기준선: zig build bench \[-- filter\] \[-- json=path\] |
| `gen-icons` | \-Dicon-set으로 선택한 아이콘 모듈 재생성 (기본값 lucide) |
| `gen-icons-lucide` | 공개 Lucide 아이콘 모듈 재생성 |
| `gen-icons-common` | provider 중립 common 아이콘 모듈 재생성 |
| `gen-icons-untitled / gen-icons-all` | 내부 아이콘 세트, 내부 checkout 전용 |
| `gen-component-index` | src/ui를 AST 스캔해 component\_index\_generated.zig 재생성 |
| `capability-matrix` | 생성된 macOS 기능 매트릭스 출력 |
| `text-corpus-dump` | 커밋된 T0 텍스트 좌표 코퍼스 출력 |

## 빌드 옵션

| 옵션 | 기본값 | 효과 |
| --- | --- | --- |
| `-Dtest-mode=true` | `false` | e2e harness 활성화 (file-RPC 서버) |
| `-De2e-port=<n>` | `19816` | E2E 포트, 기본 RPC 디렉터리 이름에 사용 |
| `-Dtest-filter=<s>` | — | 이름에 해당 부분 문자열이 포함된 test-ui 테스트만 실행 |
| `-Dicon-set=<name>` | `lucide` | 내장 아이콘 provider: lucide 또는 untitled (내부 전용) |
| `-Dgpu-backend=<name>` | `metal` | GPU 백엔드: metal 또는 null |

> NOTE
> 
> **의존성 옵션은 명시적으로 전달해야 합니다.** Zig는 의존성 빌드 옵션을 서로 격리합니다. `zig build -Dtest-mode=true`가 zenit까지 전달되려면 다운스트림 앱이 `b.dependency("zenit", ...)`에서 `.@"test-mode"`와 `.@"e2e-port"`를 전달해야 합니다. 템플릿은 이미 그렇게 되어 있습니다.

## 품질 스크립트

| 스크립트 | 검사 내용 |
| --- | --- |
| `./scripts/check_oss_boundary.sh` | src/ui의 import를 정적으로 검사한 뒤 hello-button을 빌드해 금지된 모듈에 도달할 수 없음을 확인 |
| `./scripts/check_style_literals.sh` | 예제의 생 색상 / 글자 크기 리터럴은 줄이기만 하고 늘리지 않음 (ui.arb 탈출구는 허용) |
| `bash scripts/switch_icon_set.sh lucide` | 지정한 아이콘 세트로 test-headless와 storybook 빌드를 실행하며, 작업 트리는 건드리지 않음 |

> TIP
> 
> **ZIG로 재정의합니다.** 저장소 스크립트는 PATH에 있는 `zig`를 사용합니다. 특정 툴체인을 고정하려면 `ZIG=/absolute/path/to/zig`를 설정합니다.

## Bundle 검사

예제 bundle은 ad-hoc 서명되며 quarantine 속성이 제거됩니다. 아래 명령으로 서명을 검증하고 남아 있는 확장 속성을 나열합니다.

```sh
zig build hello-button
codesign --verify --deep --strict "zig-out/Hello Button.app"
xattr -lr "zig-out/Hello Button.app"
```
