계약 연결
expect는 필요한 기능을, provide는 제공하는 기능을 선언합니다. 계약 이름뿐 아니라 scope·owner·도달 범위·요구 수량이 연결을 결정합니다.
선언 방향
- DB 모듈·번들과 UI 번들은 flat
expect배열을 선언합니다. - UI 모듈은 expect를 선언하지 않습니다.
- UI 모듈·번들이
provide.ui,provide.db로 구현 또는 재제공을 선언합니다. provide.reexport라는 별도 필드는 없습니다.
json
{
"expect": [
"page.title",
{ "contract": "page.actions", "min": 0, "max": 1, "description": "선택 작업 영역" }
]
}
json
{
"provide": { "ui": ["page.title", "page.actions"] }
}
두 조각은 각각 소비자와 제공자의 선언 예시입니다. 하나의 완전한 manifest가 아니며, 실제 연결은 조립 위치와 kind 규칙도 충족해야 합니다.
scope와 owner
| 표기 | 탐색 의미 |
|---|---|
page.title
|
로컬 계약. 실효 직계 관계를 기준으로 연결 |
api:page.title
|
전역 API 계약. 실효 의존 폐포에서 탐색 |
pkg:@scope/name#page.title
|
지정한 패키지 owner의 로컬 계약을 탐색 |
무자격 계약과 api: 계약은 정체성이 다릅니다. owner가 다른 로컬 계약도 별도입니다. 계약 문법에서 상세 조건을 확인하세요.
수량과 재제공
기본 요구 수량은 1개입니다. ?는 0~1개, +는 1개 이상을 요구하며 객체형 min/max로 수량을 표현할 수 있습니다. 수량은 제공자 수이며 함수 멤버 개수와 다릅니다.
DB 계열 expect는 전파되지만, 하위 제공을 상위로 보이게 하려면 자신의 provide.ui/provide.db에 명시적으로 다시 선언해야 합니다.
검색 결과를 사용하는 방법
정확 계약 집계는 owner를 보존합니다. UI 기능 패턴은 같은 이름의 사례를 모아 보여줍니다. 패턴 사용 수나 제공 선언만으로 구현 호환성을 추정하지 말고 동일 버전의 export와 소비 코드를 확인하세요.