Nexia CLI
전체 명령, 단계별 질문, 옵션, 실행 위치, 인증, 자동화와 오류 복구를 설명합니다.
Nexia CLI
프로젝트·앱은 create, 앱 내부 코드는 make로 생성합니다. 옵션을 입력하면 해당 질문을 건너뛰고, 입력하지 않은 설정은 단계별로 묻습니다. 이번 명령 체계는 호환 별칭을 남기지 않는 변경입니다. 플랫폼 인증 범위, 생성기의 데이터·번역 규칙, DB 작업과 제출 의미는 유지합니다. SSO와 profile은 제공하지 않습니다.
시작하기
Node.js 22.12+, npm 11.x, PHP 8.4+, Composer가 필요합니다.
npm install -g @nexia/cli@alpha
nexia setup --devtools
nexia create project my-project
cd my-project
nexia create app people
cd people
composer install --no-scripts
npm install
nexia make resource Note
nexia dev기존 프로젝트에 참여하려면 빈 프로젝트 폴더에서 nexia connect <project-id>를 실행하고 브라우저에서 승인하세요. 필요한 앱 저장소를 바로 아래 폴더에 clone한 뒤 의존성을 설치하고 dev를 실행합니다. 프로젝트 폴더와 각 앱 저장소는 구분합니다. 기존 AGENTS.md는 덮어쓰지 않습니다.
전체 명령
모든 명령 앞에는 nexia를 붙입니다.
| 명령 | 기능 |
|---|---|
setup | 환경과 앱 생성 도구 준비 |
create [project|app] [directory] | 대상을 선택하고 프로젝트 또는 앱 생성 |
connect [project-id] | 인증 후 현재 프로젝트 폴더 연결 |
login [project-id] | 폴더 연결을 바꾸지 않고 인증·재인증 |
logout | 인증 해제·폴더 연결과 데이터 유지 |
make [resource|page] [name] | 대상과 코드 이름을 선택하고 생성 |
dev | 프로젝트 전체 앱 감시·개발 |
check | 앱 소스 검사 |
status | 인증·프로젝트·폴더·샌드박스 상태 조회 |
db migrate | 앱 샌드박스 마이그레이션 요청 |
db seed [key] | 현재 앱의 선언된 개발 데이터 실행 |
db status | 앱 DB 작업 상태 조회 |
submit | 기존 Git 버전 태그 심사 제출 |
submit status [id] | 제출 상태 조회 |
submit cancel [id] | 취소 가능한 제출 취소 |
submit retry [id] | 재시도 가능한 제출 재요청 |
help [command] | 명령별 도움말 |
--version | 설치된 CLI 버전 |
nexia만 실행하면 도움말을 표시합니다. nexia create, nexia make, nexia db는 작업 선택부터 질문합니다. 선택은 번호나 값으로 입력할 수 있습니다.
질문과 최종 확인
명시한 옵션은 검증 후 그대로 사용하며 다시 묻지 않습니다. 미입력 설정은 설명과 기본값을 제시합니다. 잘못 입력하면 해당 질문을 반복합니다. 메뉴를 표시하지 않으면 메뉴 그룹·아이콘·순서 질문은 생략합니다. 추가 언어를 선택한 경우에만 그 언어 이름을 묻습니다.
앱·리소스·페이지 생성의 마지막에는 설정과 대상 폴더를 보여주고 생성·설정 수정·취소를 선택합니다. Ctrl+C 또는 입력 종료로 취소할 수 있습니다. 확인 전 생성은 실행되지 않습니다. 기존 생성기의 사전 검사를 먼저 실행합니다. 리소스 생성은 기존 파일·등록을 건너뛰고, 페이지 생성은 충돌 시 거부합니다. 기존 소스를 덮어쓰지 않습니다. 실제 OS 쓰기 오류가 발생하면 이미 보고된 파일 변경을 확인해야 할 수 있습니다.
nexia create app people --vendor acme --family people
nexia make resource LeaveRequest --label-ko '휴가 신청'
nexia make page Summary --label-ko '요약' --no-record --no-navigation
nexia help make resource앱 생성
질문: 폴더 → 코드 이름 → 패키지 소유자 → 앱 식별자 → 표시 이름 → 기능 그룹 → 테이블 접두사 → 선행 앱 → 확인.
| 옵션 | 의미·기본값 |
|---|---|
--name | PHP 코드 이름·폴더 이름에서 추천 |
--vendor | Composer/npm 소유자·필수 |
--key | 안정적인 앱 식별자·코드 이름에서 추천 |
--display-name | 화면 표시 이름·코드 이름 기본값 |
--family | 메뉴 기능 그룹·필수 |
--table-prefix | DB 테이블 접두사·앱 식별자에서 추천 |
--prerequisite | 필수 선행 앱 식별자·반복 가능·기본 없음 |
--vendor acme, --key people은 acme/people, @acme/people 패키지를 만듭니다. 등록 전에 안정적인 식별자를 정하세요. 앱 생성은 등록·설치가 아닙니다. 기존 폴더는 dry-run에서도 거부합니다.
리소스 생성
질문: 앱 → 코드 이름 → 한국어 표시·목록 이름 → 중국어 이름 추가 여부 → 데이터 소유 범위 → 메뉴 표시 → 메뉴 설정 → 확인.
| 옵션 | 의미·기본값 |
|---|---|
--label-ko | 직접 작성한 한국어 이름·필수 |
--label-ko-plural | 한국어 목록 이름·단수 이름 기본값 |
--label-zh | 중국어 이름·생략 시 기존 영어 fallback |
--label-zh-plural | 중국어 목록 이름·단수 이름 기본값 |
--record-owner | legal_entity 기본값 또는 tenant |
--navigation / --no-navigation | 메뉴 표시·기본 표시 |
--navigation-group | operations 기본값 |
--navigation-subgroup | 메뉴 하위 그룹·기본 없음 |
--icon | box 기본값 |
--sort | auto 기본값·생성기의 다음 순서 유지, 또는 숫자 |
데이터 소유 범위와 접근 권한은 별개입니다. 법인별 소유를 선택했다고 접근 권한이 부여되지 않습니다. 영어 이름은 코드 이름에서 생성하고 중국어 미입력 시 기존 fallback을 유지합니다. 이번 변경은 번역 생성 규칙을 바꾸지 않으며 범용 --label locale=value는 제공하지 않습니다.
페이지 생성
질문: 앱 → 코드 이름 → 한국어 표시 이름 → 개별 항목 조회·수정 화면 포함 여부 → 메뉴 표시·그룹·순서 → 확인.
옵션은 --label-ko, --record / --no-record, --navigation / --no-navigation, --navigation-group, --sort입니다. 레코드 화면과 메뉴는 기본 포함, 그룹은 operations, 순서는 100입니다. 페이지는 모델·마이그레이션·리소스를 만들지 않습니다. 생성 후 업무 쿼리를 구현하세요.
메뉴 그룹은 insights, management, operations, master-data, settings 중 선택합니다. --no-navigation과 메뉴 상세 옵션은 함께 사용할 수 없습니다. 중복 옵션·상충하는 참/거짓 옵션도 오류입니다. 필드·관계 설계기와 강제 덮어쓰기는 제공하지 않습니다.
실행 위치와 대상 선택
앱 하위 디렉터리에서도 상위 폴더를 찾아 동작합니다. --app <폴더명 또는 식별자>를 우선하고, 없으면 현재 앱·유일한 앱을 선택합니다. 프로젝트에 여러 앱이 있으면 선택 질문을 표시합니다.
| 명령 | 프로젝트 루트 | 앱 내부 |
|---|---|---|
create app | 바로 아래에 생성 | 소속 프로젝트의 형제 앱으로 생성 |
make, db, submit | 대상 앱 선택 | 현재 앱 |
check | 전체 앱 | 현재 앱 |
dev | 전체 프로젝트 | 전체 프로젝트 |
connect | 실행 가능 | 프로젝트 루트로 이동 안내 |
dev --app people은 특정 앱만 개발합니다. 기본 포트는 4310이며 --port로 바꿉니다. 컨테이너는 --container를 사용합니다. 프로젝트 내 앱은 하나의 포트를 공유하며 새 앱이 자동으로 합류합니다. 중복 식별자와 심볼릭 링크 폴더는 실행하지 않습니다.
dev는 등록·샌드박스 준비·소스 동기화·프런트 감시를 담당합니다. 소스 제한은 2000파일, 파일당 2 MiB, 전체 16 MiB이며 비밀 파일·의존성·심볼릭 링크는 제외합니다. 샌드박스 보존 한도는 100리비전/512 MiB입니다. 데이터는 자동 초기화하지 않습니다. Ctrl+C는 로컬 감시를 종료합니다. 원격 실행 관리는 Developers에서 하며 기존 쓰기 임대·진행 중 준비 상태가 새 개발 실행을 막을 수 있습니다.
인증
login은 현재 폴더의 프로젝트로 재인증하거나 프로젝트 ID를 묻습니다. 계정 전체가 아닌 프로젝트 단위 브라우저 승인입니다. connect는 인증과 폴더 연결을 수행하며 create project도 승인을 포함합니다. --no-browser는 승인 URL만 출력합니다. logout은 폴더 연결·데이터를 지우지 않습니다. status가 현재 인증과 폴더가 다른지 알려주며 앱을 다른 프로젝트로 자동 이동하지 않습니다.
공식 플랫폼은 https://developers.nexia.to 입니다. 플랫폼 개발자는 NEXIA_ENDPOINT 환경 변수로 login, connect, create project의 서버를 지정할 수 있습니다. 이미 연결된 프로젝트의 재인증은 저장된 서버를 우선합니다. 서버가 바뀌면 기존 인증은 해제됩니다. .nexia/와 전역 CLI 인증 파일을 공유하거나 커밋하지 마세요.
환경 준비
setup --devtools는 CLI 전용 디렉터리에 생성 도구를 설치/업데이트합니다. 전역 Composer는 바꾸지 않습니다. setup은 macOS Homebrew PHP·Composer도 설치/업그레이드할지 묻고 실행 계획을 확인받습니다. 기존 런타임 버전이 바뀔 수 있으며 이번 개편은 업그레이드 정책을 변경하지 않습니다. Linux/Windows는 필수 도구를 직접 설치한 뒤 --devtools를 사용합니다. --dry-run은 설치하지 않으며 셸 시작 파일도 자동 편집하지 않습니다.
DB 작업과 제출
DB 작업은 등록된 현재 앱의 활성 샌드박스에만 적용됩니다. db seed는 해당 앱의 선언된 fixture를 선택하며 다른 설치 앱을 대상으로 하지 않습니다. queued는 완료가 아닙니다. db status로 확인하세요. 쓰기 임대를 소유한 dev는 먼저 종료합니다. 응답 유실 시 출력된 동일 --request-id로 재시도하고 검토 필요 상태에서는 운영자 확인을 받습니다.
Git으로 코드와 버전 태그를 먼저 커밋·push한 뒤 check, submit --tag v1.0.0을 실행하세요. 저장소 미연결 시 대화형 실행은 Developers 승인을 안내합니다. 자동화에서는 미리 연결해야 합니다. CLI가 커밋·태그·push하지 않습니다. 제출은 심사 요청이며 배포·설치와 다릅니다. 반환된 ID로 상태를 확인하고, 취소·재시도는 서버 상태와 권한에 따라 허용됩니다. 코드 변경에는 새 태그가 필요합니다.
자동화·오류 복구
| 옵션 | 의미 |
|---|---|
--no-interactive | 질문 없음·필수값 누락/대상 모호 시 오류 |
--yes | 최종 변경 확인 생략·필수값/권한/브라우저 승인 대체 아님 |
--dry-run | 설치·생성 명령에서 변경 계획만 표시 |
--json | 상태·DB·제출 명령의 구조화 출력·질문 없음 |
--request-id | DB·제출의 동일 요청 복구용 UUID |
TTY가 없으면 질문하지 않습니다. 선택 설정은 문서화된 기본값을 사용합니다. dry-run은 변경이 없어 최종 확인을 생략합니다.
nexia make resource Note --app people --label-ko '메모' --no-interactive --yes
nexia submit --app people --tag v1.0.0 --no-interactive --yes --json
nexia submit status <submission-id> --jsonJSON 모드의 stdout에는 결과 또는 error.code, error.message만 출력하고 진단은 stderr로 보냅니다. 종료 코드는 0 성공/접수, 1 작업 실패, 2 입력 오류, 130 취소입니다. 0이어도 비동기 작업 완료를 의미하지 않습니다.
인증 만료는 프로젝트에서 login으로 복구합니다. 프로젝트 생성 응답을 잃으면 같은 폴더·이름으로 재시도합니다. 대기 중 승인을 이어가며 다른 프로젝트를 임의 생성하지 않습니다. 소스·빌드 오류는 원인을 수정하고 dev를 다시 시작하세요. DB 초기화를 복구 수단으로 사용하지 마세요.
이전 명령에서 전환
init → create app, create-project → create project, link-project → connect, make:resource/page → make resource/page, validate → check, submissions → submit으로 변경합니다. 뒤에 앱 경로를 붙이지 않고 해당 폴더에서 실행하거나 --app을 사용합니다. --without-navigation/record는 --no-navigation/record로 바뀝니다.
수동 등록·sync·runtime·repository·doctor 명령, browser 템플릿, DB reset/references, 다른 앱 fixture, 리소스 카탈로그, 서명 생성기, Filament 옵션, Runtime 이미지 검사, 로컬 MCP는 공개 CLI에서 제외합니다. 플랫폼·SDK·내부 구현 자체를 삭제하지는 않습니다. 수동 단발성 스냅샷과 nexia를 통한 MCP 실행은 더 이상 제공되지 않으며 동기화는 dev에서 수행합니다. 제외된 모든 기능에 Console 대체 기능이 있다고 가정하지 마세요. PHP devtools의 기존 서명·Filament 생성기는 유지합니다.
CLI 개발 시 독립적으로 설치한 생성기를 NEXIA_DEVTOOLS_PATH로 지정할 수 있습니다. 생성·검사 대상 앱 내부의 실행 파일은 허용하지 않습니다. 지원 요청에는 재현 절차와 버전을 포함하고 인증 정보·고객 데이터는 제외하세요: Developer Support.