emit은 점검이나 연동을 위한 교체 가능한 생성 소스를 보여 줍니다. build는
관리되는 배포 제품을 만듭니다. 임시 컴파일러 저장공간이나 맥락 없이 골라낸 생성
파일이 아니라 build 디렉터리를 배포하세요.
제품 빌드
topaz build main.tpz --release --out-dir native-product
topaz build --target python --root my-app --locked --out-dir python-product
topaz build main.tpz --target web --out-dir web-product
topaz build main.tpz --target web-worker --out-dir worker-product
topaz build --root my-app --locked --release --out-dir package-product
마지막 명령은 topaz.toml의 [build].target을 사용합니다. web-app과
http-service는 패키지 전용입니다. topaz.lock은 작성과 검증에 사용합니다.
완성된 관리형 제품은 자체 식별자를 topaz-artifact.json에 기록합니다.
모든 제품의 공통 파일
빌드에 성공하면 다음 파일이 항상 추가됩니다.
LICENSE
NOTICE
GENERATED-OUTPUT-NOTICE.txt
topaz-artifact.json산출물 매니페스트에는 대상, 도구 모음·언어 식별자, 런타임 요구 사항, 실행 방법, 각 관리 파일의 경로, 크기, 해시와 실행 권한 요구가 기록됩니다. 이 파일은 마지막에 기록됩니다.
대상별 파일 구조
네이티브는 플랫폼 전용 파일 하나를 추가합니다.
target/debug/program[.exe]
target/release/program[.exe]선택한 프로필 하나만 존재합니다. Windows에서는 파일 이름 끝에 .exe가
붙습니다.
Python은 다음 파일을 추가합니다.
program.py
topaz_py_rt.pyRaw Web은 다음 파일을 추가합니다.
topaz-web.js
topaz-web.d.ts
topaz-web.wasmWeb Worker는 Raw Web 파일에 다음 파일을 더합니다.
topaz-web-worker.js
topaz-web-worker-client.js관리형 Web 애플리케이션은 Raw Web 파일에 다음 파일을 더합니다.
index.html
topaz-app.js
topaz-web-capabilities.json
styles/app.css선언한 스타일과 자산은 정규화된 상대 경로를 유지하므로 마지막 줄은 패키지에 따라 달라집니다.
제한형 HTTP 서비스는 다음 파일을 추가합니다.
target/release/program[.exe]
topaz-service-config.json
THIRD-PARTY-NOTICES.txt이 예시는 릴리스 빌드입니다. 디버그 빌드는 target/debug를 사용하며
Windows에서는 [.exe]가 붙습니다.
토파즈 패키지 소스 없이 실행
제품 디렉터리 전체를 새 위치로 복사한 뒤 그 루트에서 실행합니다.
./target/release/program
python3 program.py
선택한 네이티브, HTTP 또는 Python 제품에 해당하는 명령만 사용하세요. Python은 3.11 이상이 필요합니다. 네이티브와 HTTP 실행 파일은 빌드한 플랫폼 전용입니다.
관리형 Web 애플리케이션 디렉터리는 HTTP로 제공하고 index.html을 엽니다. Raw
Web과 Worker 제품에는 생성 JavaScript API를 가져오는 ES 모듈 호스트가
필요합니다. 어떤 Web 제품도 file:// 모듈 로딩에 의존하면 안 됩니다.
네이티브와 Python 패키지 애플리케이션은 프로세스 작업 디렉터리를 기준으로
선언한 파일 시스템 권한 루트를 찾습니다. 매니페스트가 요구하면 관리형 제품
옆에 애플리케이션 data/와 쓰기 가능한 출력 디렉터리를 복사하거나 만드세요.
패키지 데이터는 자동으로 추가되지 않습니다. Web 스타일과 자산은 다릅니다.
선언한 [web] 입력은 관리형 Web 제품에 복사됩니다.
출력 디렉터리 안전과 복구
같은 대상을 다시 빌드하면 기존 관리 바이트부터 검증합니다. 대상 변경, 잘못된 매니페스트, 변경된 관리 파일, 심볼릭 링크나 사용자 소유 경로와의 충돌은 거부합니다. 산출물 매니페스트에 없는 파일은 보존합니다.
억지로 빌드하려고 소유권이 불분명한 디렉터리를 지우지 마세요. 조사할 수 있게
보존하고 새 빈 --out-dir을 사용합니다. 이전 제품을 복원해야 한다면 해시를
편집하거나 관리 파일을 하나씩 지우지 말고 정상으로 확인된 제품 전체를
복원하세요.