본문으로 건너뛰기
참조

Artisan 명령어

개발과 검증, App 라이프사이클, 런타임 운영에 쓰는 Nexia·Laravel·tenancy 명령을 찾아봅니다.

Artisan 명령어

이 문서는 비공개 호스트 환경에 이미 접근 권한이 있는 Nexia 유지관리자를 위한 참고 자료입니다. Core는 외부 개발자에게 배포하지 않습니다. 아래 호스트 명령은 공개 CLI·클라우드 샌드박스의 선행 조건이 아닙니다. 외부 개발자는 빠른 시작을 따라주세요.

Core 루트에서 설치된 명령의 정확한 인자를 확인합니다.

코드 예시
Shell
task artisan -- help nexia-apps:make-package-resource --no-ansi

첫 App은 App 패키지 만들기와 Resource 만들기를 따라가세요. 이 페이지는 옵션 조회용입니다.

시그니처

Core 명령은 nexia-apps:, nexia-agent:, nexia-access:, nexia-runtime:, nexia-demo: 등 역할별 섹션으로 구분합니다. 이전 nexia: 명령 이름의 별칭은 제공하지 않으므로 업그레이드할 때 외부 스크립트의 호출 이름도 변경해야 합니다. 앱이 제공하는 명령은 nexia-app-people:, nexia-app-time-absence:처럼 nexia-app-{앱 키}: 형식을 사용합니다. 앱의 명령 시그니처와 스케줄러 호출에 같은 접두사를 사용합니다.

모든 명령은 컨테이너 wrapper로 실행합니다. -- 뒤의 내용이 app 컨테이너 안 php artisan으로 전달됩니다.

코드 예시
Shell
task artisan -- nexia-apps:doctor-package-app workshop
task artisan -- list nexia-apps --no-ansi
task artisan -- help nexia-apps:doctor-package-app --no-ansi

PostgreSQL은 컨테이너 안에서만 해석되므로, 데이터베이스를 건드리는 명령은 호스트 셸에서 실패합니다. list는 현재 설치된 명령 목록이고 help <command>는 정확한 시그니처와 옵션 레퍼런스입니다.

최소 예시

생성 → 활성화 → 대상 마이그레이션 → 설치 순서는 Resource 만들기를 따릅니다. Resource 파일만 미리 보려면 다음을 실행합니다.

코드 예시
Shell
task artisan -- nexia-apps:make-package-resource workshop Note --record-owner=legal_entity --label-ko=노트 --dry-run

인자와 명령 목록

자주 쓰는 Laravel·tenancy 명령

Nexia 절차에서 반복해서 쓰는 framework·tenancy 명령입니다. 데이터를 바꾸거나 지우는 변형을 쓰기 전에는 task artisan -- help <command>로 범위를 확인하세요.

명령용도
migrate, migrate:statuscentral migration 적용 또는 상태 확인
db:seed선택한 데이터베이스 seeding
route:list, route:clearroute 확인 또는 route cache 제거
tenants:list등록된 tenant 목록 확인
tenants:migrate, tenants:seed선택한 tenant에 migration 또는 기준 seeder 적용
tenants:run <commandname>--tenants로 고른 tenant 또는 전체 tenant context에서 명령 실행
queue:failed, queue:retry <id>실패한 queue job 확인과 재시도
schedule:list등록된 scheduled work 확인
horizon:status, horizon:terminateHorizon 상태 확인 또는 정상 재시작

대화형 마법사

모든 nexia-apps:make-package-* / nexia-resources:make-resource 명령은 두 모드 중 하나로 동작합니다.

  • 전부 지정. 필수 인자와 옵션이 명령줄에 모두 있으면 아무것도 묻지 않습니다. 자동화·CI 호출은 적힌 그대로 동작합니다.
  • 마법사. 대화형 셸에서 필수 값(name, --family= 등)을 생략하면, 빠진 값을 먼저 물은 뒤 나머지 모든 파생 값 — 표시 이름, App key, 테이블 접두, 로케일 라벨 — 을 파생 기본값이 채워진 채로 하나씩 확인시킵니다. 파일을 쓰기 전에 각 값을 검토하거나 고칠 수 있습니다.

비대화형 호출은 절대 프롬프트를 받지 않습니다. 필수 값이 빠지면 다시 실행할 정확한 플래그와 함께 실패합니다.

$ php artisan nexia-apps:make-package-app
 App name (PascalCase):
 > Workshop

 App family (lower kebab-case):
 > manufacturing

 Display name [Workshop]:
 App key (lower kebab-case) [workshop]:
 Table prefix (lower snake_case) [workshop]:
 ...

nexia-apps:make-package-resource는 같은 검토 흐름에 필수 한국어 라벨, 선택적 중국어 라벨, 마지막 Publish an App Menu entry? 확인을 더합니다. 중국어 라벨이 없으면 파생된 영어 fallback을 씁니다.

nexia-apps:make-package-app {name}

packages/{app_key}/ 아래에 App Package 기준선을 만듭니다. 도메인 Resource도, 호스트 설치도 없습니다.

옵션기본값동작
--family=—App Family 키, 소문자 kebab-case. 비대화형에서는 필수
--display-name=name의 헤드라인사용자에게 보이는 정확한 App 이름
--key=kebab(name)App key. 예약 Core 키와 기존 로컬·설치 App 키의 중복을 파일 생성 전에 거부
--table-prefix=snake(key)데이터베이스 소유권 접두
--prerequisite=—설치 전에 필요한 App key, 반복 가능
--vendor=amuzcorpComposer 벤더와 PHP 네임스페이스 벤더
--icon=box런처와 overview의 Shell 아이콘
--sort=500Family 안 런처 순서와 overview 내비게이션 순서
--description=생성됨영어 카탈로그 설명
--readiness=availableavailable, beta, preview
--repository-files-only꺼짐기존 App용. package.json, AGENTS.md, .gitignore, CI 워크플로만 생성
--dry-run꺼짐쓰지 않고 보고

일반 생성은 packages/<app-key> 경로가 이미 있으면 파일·끊어진 심볼릭 링크까지 --dry-run에서도 거부합니다. 기존 App의 누락 파일을 채우지 않습니다. 명시된 저장소 지원 파일만 추가할 때는 --repository-files-only를 사용합니다.

nexia-apps:make-package-resource {package} {name}

기존 패키지에 App 소유 테넌트 Resource를 추가합니다. API Route 그룹에 app.installed:{app_key}가 없는 패키지는 거부합니다.

전체 옵션 표와 생성 결과는 Resource 계약에 있습니다.

호스트 활성화

nexia-apps:activate-package-app {package}

모든 패키지 정의의 전제 그래프를 검증하고, 패키지를 호스트에 설치한 뒤 Permission과 Core Role 정의를 동기화합니다.

옵션동작
--build-assets활성화 후 pnpm run build 실행
--dry-run실행하지 않고 활성화 단계 표시

전제 누락이나 키 중복, 순환이 있으면 어떤 호스트 변경보다 먼저 활성화가 멈춥니다. Manifest 동기화는 엄격하게 돕니다. 닿을 수 없는 데이터베이스는 절반만 완료되는 대신 명령을 실패시킵니다.

--build-assets 없이 했다면, 돌고 있는 Vite 프로세스가 새 프런트엔드 엔트리를 보기 전에 재시작하세요.

nexia-runtime:generate-app-map

Vite와 번역, Tailwind 소스, listener 발견을 위해 해석된 Composer 설치 경로를 실체화합니다. 검토 전용 code-loaded catalog도 씁니다. generated/app-resource-descriptors.json schema 3에는 Resource Reference provider와 역방향 consumer가 있고, generated/app-public-events.json schema 1에는 공개 Event 계약과 provenance가 있습니다. 인자는 없습니다. 설치 패키지, 프런트엔드 entry, Resource descriptor, 공개 Event 선언을 바꾼 뒤 실행하고 생성 JSON이 아니라 선언을 수정하세요.

Contribution과 route cache

코드 예시
Shell
task artisan -- nexia-runtime:cache-contributions
task artisan -- nexia-runtime:refresh-runtime-caches
task artisan -- nexia-runtime:clear-runtime-caches

nexia-runtime:cache-contributions는 요청용 전체 surface manifest를 만듭니다. nexia-runtime:refresh-runtime-caches는 그 manifest와 route cache를 다시 만들고, nexia-runtime:clear-runtime-caches는 둘 다 지웁니다. 일반 요청은 생성된 manifest를 신뢰하며 contribution source를 스캔하지 않습니다.

테넌트 라이프사이클

nexia-apps:install-dev-app {app}

로컬에서 지정한 테넌트에 개발 중인 App을 설치합니다. APP_ENV=local인 콘솔에서만 실행되며 --tenant에 테넌트 ID를 반드시 지정합니다. Central의 게시·사용 자격과 패키지의 preview 제한을 개발 설치에 한해 건너뜁니다. 게시 상태와 readiness는 변경하지 않습니다. 선행 App, descriptor 검증, 마이그레이션, 초기화와 사용자 권한 검사는 유지합니다.

코드 예시
Shell
task artisan -- nexia-apps:install-dev-app workshop --tenant="$nexia_tenant" --dry-run
task artisan -- nexia-apps:install-dev-app workshop --tenant="$nexia_tenant" --with-prerequisites

--dry-run은 계획만 표시합니다. 실패 복구나 재활성화도 같은 개발 설치 명령을 사용합니다. 운영에서는 기존 테넌트 설치 명령과 게시 정책을 따릅니다. 개발 DB·설치 상태를 운영 DB로 복사하는 절차가 아닙니다.

nexia-apps:reconcile-app-catalog

호스트에서 발견한 App을 Central 배포 카탈로그에 등록합니다. 신규 App은 third_party / private / draft이며 기존 운영자 설정은 보존합니다.

코드 예시
Shell
task artisan -- nexia-apps:reconcile-app-catalog
task artisan -- nexia-apps:reconcile-app-catalog --check

--check는 쓰기 없이 미등록·메타데이터 불일치를 검사합니다. --approve-existing은 신규 발견 App을 일괄 official / public / published로 등록하는 초기 승인 옵션입니다. 개발 설치나 일반 배포에 사용하지 마세요. 이미 등록된 초안을 게시로 바꾸지는 않습니다. 운영 게시와 비공개 App의 테넌트 사용 자격은 Central App Catalog에서 관리합니다.

nexia-apps:install-tenant-app {app}

일반 설치는 게시·사용 자격·설치 가능 상태를 검사한 뒤 해당 App과 선행 App을 마이그레이션하고 초기화합니다. 테넌트가 처음 생성될 때는 Core 테이블만 준비합니다. 이후 tenants:migrate는 설치 이력이 있는 App만 업데이트하며 비활성 App도 포함합니다. 비활성화는 테이블과 데이터를 삭제하지 않습니다.

코드로 로드된 App을 현재 테넌트에 설치합니다. 전제 그래프 전체를 검증하고 정렬된 설치·재활성화·이미활성 계획을 출력합니다.

옵션동작
--dry-run계획만 출력하고 테넌트 상태를 쓰지 않음
--with-prerequisites비활성 전제를 비대화형으로 설치하거나 재활성화

테넌트 상태를 바꾼 뒤 테넌트의 Permission 카탈로그와 Core Role 정의를 동기화하고, App initializer를 실행합니다. User 자격은 바꾸지 않습니다. Core Shell Manifest는 테넌트 설치 대상이 아닙니다.

특정 테넌트를 대상으로 하려면 감싸세요.

코드 예시
Shell
nexia_tenant=REPLACE_WITH_TENANT_ID
task artisan -- tenants:run "nexia-apps:install-tenant-app workshop --dry-run" --tenants="$nexia_tenant"

nexia-apps:repair-tenant-app {app}

테넌트에 설치된 App과 그 전제의 초기화를 재시도합니다. 실패한 설치가 실패 메타데이터와 함께 행을 non-operational로 남겼을 때 쓰세요.

nexia-apps:deactivate-tenant-app {app}

현재 테넌트에서 설치된 App을 비활성화합니다. 의존하는 App이 활성인 동안은 거부됩니다.

검증

nexia-apps:doctor-package-app {package}

무언가 없을 때 가장 먼저 돌릴 명령입니다. 검사마다 OK, WARN, FAIL 행 하나를 냅니다.

옵션동작
--json기존 summary·rows를 유지하고 구조화된 capabilities 목록 추가

검사에는 package composer name, package namespace, providers, runtime app registration, runtime app metadata, permissions discovered, contribution locations, permission contributors, navigation contributors, frontend entry, frontend entry shape, frontend component registration, translation catalogs, directory baseline files, permissions가 있습니다. 기본 표는 유효 선언 수를 보여 줍니다. JSON은 선택 App의 Resource Reference provider·consumer, 공개 Event·subscription, data-import recipe·pipeline·Resource Transfer를 묶습니다. 이는 tenant 설치나 actor-visible runtime 결과가 아닌 code-loaded 개발자 정보입니다. 선택 선언이 0개면 OK이고 깨진 선언만 WARN 또는 FAIL입니다.

nexia-apps:validate-app-compat

설치된 App의 Core·SDK 버전 제약을 검사합니다. 데이터베이스는 필요하지 않습니다.

옵션동작
--core-version=검증 기준 플랫폼 릴리스, 기본값은 호스트 릴리스 라인
--sdk-version=대상 SDK 버전 판정을 시뮬레이션. 기본값은 설치된 SDK 버전
--app=이 App key만 검증, 반복 가능
--require-declarations선택한 App에 Core 또는 SDK 호환성 선언이 없으면 실패

nexia-apps:validate-app-frontend-dependencies

App 프런트엔드 의존성을 호스트 패키지 그래프와 pnpm 락에 대해 검증합니다.

옵션동작
--app=이 App key만 검증, 반복 가능
--require-manifests선택된 App에 package.json이 없으면 실패

nexia-apps:validate-app-descriptors {app?}

App 하나의 공개 Resource·독립 Event descriptor, Public Event catalog의 replacement·collision, exact subscription 이름·schema version, Process Template, DMN starter, work action, user-task form, start binding, Approval preset을 엄격하게 검증하고, 인자를 생략하면 설치 가능한 모든 App을 검증합니다. 첫 번째 잘못된 descriptor 경로와 그 뒤의 계약 위반 내용을 보고하고 0이 아닌 값으로 끝납니다. 활성화 전에 실행하세요. 활성화는 번역·권한 동기화 전에 같은 게이트를 호출하고, 테넌트 설치는 테넌트 상태를 쓰기 전에 호출합니다.

이어서 작성자에게 보이는 라벨 모호성을 감사하고 그것도 실패로 처리합니다. 한 App의 공개 lifecycle 이벤트 둘이 같은 labelKey를 쓰는 경우, 배포 로케일에서 같은 텍스트로 해석되는 경우(단, 서로 다른 리소스이고 두 리소스가 모두 ResourceDescriptor::labelKey를 선언하면 제외), payload 필드가 자기 이벤트의 labelKey나 형제 필드의 라벨을 재사용하는 경우입니다. 이 감사는 설치된 App map을 통해 App의 로케일 카탈로그를 읽으므로, 그 경로를 해석할 수 없는 환경에서는 통과가 아니라 미감사로 보고합니다. 모호성은 설치 실패가 아닙니다. 설치 게이트를 실패시키면 리소스 기여가 통째로 live 카탈로그에서 누락되어, 잘못 이름 붙은 라벨보다 작성 경험을 더 해칩니다.

nexia-resources:validate-resource-import-coverage

설치된 모든 App을 발견된 ImportRecipeContribution, ResourceImportPipelineContribution dataset과 .nexia/resource-import-coverage.json에 대조합니다. 분류되지 않은 App, 중복 dataset, manifest와 runtime 불일치가 있으면 0이 아닌 값으로 끝납니다.

옵션동작
--manifest=Coverage manifest 경로. 기본값 .nexia/resource-import-coverage.json

nexia-access:validate-presets

코드로 정의된 Role Preset 권한 패턴을 검증합니다. 인자가 없습니다.

nexia-runtime:validate-translations

호스트와 패키지 번역 카탈로그를 쓰지 않고 검증합니다.

옵션동작
--app=소스별 검증을 App 하나로 제한하며, 병합 카탈로그 검증은 계속 수행
--source=아직 설치하지 않은 App을 포함해 번역 소스 디렉터리를 지정하며, --app= 필수

Search 운영

아래 두 명령은 Scout가 Typesense를 사용할 때만 실제 작업을 수행합니다. Database Search 프로필에는 필요하지 않습니다.

nexia-search:reindex {resource?} {--tenant=}

Resource마다 새 물리 Typesense collection을 만들고, ready 상태인 모든 테넌트를 그 하나의 collection에 backfill한 뒤에야 stable alias를 원자적으로 옮깁니다. 한 테넌트가 실패하면 해당 Resource의 alias는 이전 대상에 그대로 두고 명령은 실패로 끝납니다. resource를 생략하면 allowlist의 모든 Resource를 처리합니다.

코드 예시
Shell
task artisan -- nexia-search:reindex shell.workspace

--tenant=는 범위를 좁힌 재구축이 아닙니다. collection 하나에 모든 테넌트가 들어가므로 한 테넌트만으로 재구축하면 나머지 테넌트가 live search에서 사라집니다. 대신 live collection 안에서 그 테넌트만 갱신하며 alias는 옮기지 않습니다. alias가 아직 없으면 ready 상태인 모든 테넌트를 대상으로 하는 전체 재구축으로 넘어갑니다.

입력기본값동작
resourceallowlist의 모든 Resourceshell.workspace 같은 안정된 Resource Key 하나
--tenant=모든 ready tenant 대상 전체 재구축Central tenant key 하나를 alias 교체 없이 제자리에서 갱신

nexia-search:check-drift {--tenant=}

Alias나 engine document를 바꾸지 않고 tenant DB와 Typesense document count를 비교합니다. Drift 또는 engine failure가 있으면 0이 아닌 값으로 끝납니다.

옵션기본값동작
--tenant=모든 ready tenant읽기 전용 검사를 tenant key 하나로 제한

권한과 번역

nexia-access:sync-manifest

App 권한 정의와 Core Role을 동기화합니다.

옵션동작
--dry-run쓰지 않고 변경 표시
--all-tenants모든 테넌트 순회, 테넌시 컨텍스트 밖에서의 기본값
--tenant=id로 테넌트 하나
--only-centralcentral 연결만(권한만)
--if-availablecentral 데이터베이스에 닿을 수 없으면 조용히 건너뜀. Composer 훅용

nexia-access:sync-permissions

시스템 소유 권한 카탈로그와 기준 Role Template을 동기화합니다. --dry-run, --all-tenants, --tenant=, --only-central 옵션이 같습니다.

nexia-access:retire-permission {key}

배정을 보존하고 영향받는 Role을 검토 대상으로 표시하면서 낡은 권한을 감사하고 퇴역시킵니다.

옵션동작
(없음)기본이 dry-run
--execute퇴역으로 표시하고 영향받는 Role 표시
--guard=권한 guard 이름, 기본값은 web
--tenant=, --all-tenants, --only-central범위 선택
--force-catalog-entry아직 PermissionCatalog에 올라 있는 권한을 퇴역시킴. 긴급 복구용만

번역 카탈로그

코드 예시
Shell
task artisan -- nexia-runtime:cache-translation-catalogs
task artisan -- nexia-runtime:clear-translation-catalog-cache

nexia-resources:export-types

백엔드 PHP enum에서 TypeScript 계약 파일을 다시 생성합니다.

옵션동작
--check생성 파일 중 하나라도 어긋나면 0이 아닌 값으로 종료하고 아무것도 쓰지 않음

CI에서는 --check를 쓰세요.

데모 App fixture

nexia-demo:seed-apps

초기화된 기존 데모 테넌트에 반복 실행 가능한 App fixture를 추가합니다. 데이터를 초기화하지 않으며, 데모 fixture key와 기본 도메인이 모두 일치해야 합니다. App을 설치하는 명령은 아닙니다.

옵션동작
--app=App key로 fixture contribution을 선택하며 반복 지정 가능. 생략하면 대상 contribution 전체 실행
--force로컬 외 환경에서도 실행 허용

완료한 App과 운영 가능 상태가 아니어서 건너뛴 App을 표시합니다. 건너뛴 App이 있으면 0이 아닌 값으로 종료하며, 이미 완료한 seed는 유지됩니다.

전체 Nexia 명령 목록

현재 호스트가 등록하는 custom command 전체입니다. 설치된 App이 명령을 더 등록할 수 있으므로, 현재 소스 폴더에서 등록된 최종 목록은 task artisan -- list --no-ansi로 확인합니다.

영역명령
생성과 활성화nexia-apps:make-package-app, nexia-apps:make-package-resource, nexia-apps:make-package-signature-data-source, nexia-resources:make-resource, nexia-apps:activate-package-app, nexia-apps:doctor-package-app, nexia-runtime:generate-app-map
Tenant App 라이프사이클nexia-apps:install-dev-app, nexia-apps:reconcile-app-catalog, nexia-apps:install-tenant-app, nexia-apps:repair-tenant-app, nexia-apps:deactivate-tenant-app, nexia-apps:apply-template
검증nexia-runtime:validate-translations, nexia-apps:validate-app-compat, nexia-apps:validate-app-descriptors, nexia-apps:validate-app-frontend-dependencies, nexia-resources:validate-resource-import-coverage, nexia-access:validate-presets, nexia-db:audit, nexia-runtime:horizon-health
계약·권한·cachenexia-resources:export-types, nexia-access:sync-manifest, nexia-access:sync-permissions, nexia-access:retire-permission, nexia-runtime:cache-contributions, nexia-runtime:mark-contribution-cache-stale, nexia-runtime:refresh-runtime-caches, nexia-runtime:clear-runtime-caches, nexia-runtime:cache-translation-catalogs, nexia-runtime:clear-translation-catalog-cache
Searchnexia-search:reindex, nexia-search:check-drift, nexia-search:reset-local, nexia-search:reconcile-knowledge-search-index, nexia-search:prune-search-analytics
Agentnexia-agent:generate-keys, nexia-agent:reference-coverage, nexia-agent:deliver-usage, nexia-agent:prune-usage-deliveries, nexia-agent:expire-inputs, nexia-agent:prune-input-deadlines, nexia-agent:prune-analysis-executions, nexia-agent:prune-agent-egress-approvals
접근과 fixtureapp:create-admin, nexia-access:grant-tenant-admin, nexia-access:grant-full-access, nexia-access:backfill-employee-access, nexia-demo:seed-demo, nexia-demo:seed-apps, nexia-demo:seed-reports, nexia-demo:reset, nexia-perf:provision-fixture, nexia-signature:provision-live-fixture, nexia-signature:fault
Event와 scheduled workevents:dispatch-outbox, events:retry-inbox, process:process-flow-node-timers, nexia-access:expire-protected-access, nexia-communications:process-communication-acknowledgements, nexia-documents:process-document-operations, nexia-db:provision-partitions
정리와 복구nexia-approval:prune-approval-attachment-stages, nexia-documents:prune-document-binary-stages, nexia-events:prune-event-transport, nexia-resources:prune-resource-import-analyses, nexia-media:media-rescan, nexia-media:prune-upload-intents, nexia-files:reconcile-delivery-attempts, nexia-files:reconcile-byte-dispositions, nexia-files:backfill-inventory, nexia-signature:prune-signature-pdf-stages, nexia-signature:enforce-signature-artifact-retention, nexia-signature:prune-signature-scratch, nexia-signature:prune-signable-document-sources, nexia-signature:recover-signature-request-batches, nexia-tenants:delete-all, nexia-environment:reset, directory:merge-parties, forge:check-certificates

결과 또는 반환: 테스트와 생성 artifact

패키지 테스트는 extra.nexia.test_paths로 발견됩니다. 경로를 주지 않으면 러너가 Core 스위트에 발견된 모든 패키지 경로를 더해 실행합니다.

코드 예시
Shell
task test
task test -- packages/workshop/tests/Feature/NoteAuthorizationTest.php

develop에서 main으로 가는 승격 PR을 열기 전에 task check를 돌리세요.

오류

메시지원인해결
could not translate host name "postgres"호스트 셸에서 실행task를 거치거나 task shell 사용
Package app not found at {dir}. Run nexia-apps:make-package-app first.해석된 경로에 패키지가 없음기준선을 먼저 만들기
Package routes must include [app.installed:{key}] before adding resources.Route 그룹에 설치 가드가 없음미들웨어 추가 후 재실행
Unknown --record-owner value. Supported values: tenant, legal_entity.그 외 값tenant나 legal_entity 쓰기
Descriptor validation failed for App [...]Descriptor contribution 또는 공개 이벤트 payload 스키마가 잘못됨nexia-apps:validate-app-descriptors {app}을 실행해 모든 경로를 고친 뒤 활성화·설치 재시도
A Korean resource label is required. Re-run with --label-ko=<label>.비대화형 실행에서 한국어 단수 라벨 누락작성한 한국어 라벨 공급. 한국어 컬렉션 라벨은 이를 기본으로 쓰고 중국어는 선택 사항
활성화가 데이터베이스 연결에서 실패Manifest 동기화가 엄격함PostgreSQL을 띄우고 컨테이너 안에서 실행
Resource [...] is not allowlisted for search.승인되지 않았거나 알 수 없는 Resource Key로 reindex 실행Search Resource allowlist에 있는 key 사용
DRIFT tenant=...Tenant DB와 Typesense document count가 다름실패한 sync job을 확인한 뒤 범위를 제한해 reindex 실행

관례

생성·활성화·설치의 변경 범위는 --dry-run으로 먼저 확인합니다. Repair와 비활성화 명령에는 이 옵션이 없습니다. 특정 테넌트만 처리하려면 wrapper에 --tenants를 반드시 지정하세요. 생략하면 모든 테넌트가 대상입니다.

--force는 의도적으로 파일을 재생성할 때만 쓰세요. 레코드 소유권 변경은 결코 허용하지 않고, 그것은 명시적 데이터 마이그레이션이 필요합니다.

실제 사용

packages/workshop/.github/workflows/ci.yml은 package test 전에 지원 Core version마다 package validation command를 실행합니다.

코드 예시
Shell
php artisan nexia-runtime:generate-app-map --no-interaction
php artisan nexia-apps:validate-app-compat --app=workshop --require-declarations --core-version="${{ matrix.core_version }}"
php artisan nexia-apps:validate-app-frontend-dependencies --app=workshop --require-manifests
php scripts/coupling-ratchet.php check workshop

관련 문서

원본 위치: docs/developers/content/ko/getting-started/artisan-commands.md