49 lines
1.9 KiB
JSON
49 lines
1.9 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "ca-skeleton-frontend/bundle-report.schema.json",
|
|
"title": "artifacts/performance/bundle.json",
|
|
"description": "pnpm check:bundle 산출물. build-bundle 이 생산하고 web-vitals 가 FE-NFR-001/FE-NFR-002 판정에 소비한다. 두 branch 가 서로 다른 필드 명명(camelCase vs snake_case)을 제안하던 co-owned 스키마를 이 파일 하나로 확정한다.",
|
|
"type": "object",
|
|
"additionalProperties": true,
|
|
"required": ["context", "buildId", "commit", "runner", "initialJsGzipBytes", "chunks"],
|
|
"properties": {
|
|
"context": {
|
|
"type": "string",
|
|
"const": "FE-NFR-C04",
|
|
"description": "측정 context ID. bundle 측정은 build context 에서만 유효하다."
|
|
},
|
|
"buildId": { "type": "string" },
|
|
"commit": { "type": "string" },
|
|
"runner": {
|
|
"type": "object",
|
|
"description": "FE-NFR-C04 재현 메타데이터. build-manifest.schema.json 의 buildContext 와 같은 값을 담는다.",
|
|
"required": ["nodeVersion", "packageManagerVersion", "runnerImage"],
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"nodeVersion": { "type": "string" },
|
|
"packageManagerVersion": { "type": "string" },
|
|
"runnerImage": { "type": "string" }
|
|
}
|
|
},
|
|
"initialJsGzipBytes": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"description": "initial JS(app) gzip 바이트. FE-NFR-001 판정 입력."
|
|
},
|
|
"chunks": {
|
|
"type": "array",
|
|
"description": "chunk 별 gzip 크기. FE-NFR-002 판정 입력.",
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["chunkId", "kind", "gzipBytes"],
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"chunkId": { "type": "string" },
|
|
"kind": { "enum": ["initial", "lazy"] },
|
|
"gzipBytes": { "type": "integer", "minimum": 0 }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|