헌법을 쥐고 갈라진 것을 봅니다

규칙의 정본은 여러분 조직의 저장소 하나입니다. 이 화면은 그 주소를 가리키는 선언을 조립하고 하류가 그것과 갈라진 것을 읽습니다. ⛔ 저장소를 저희에게 보내지 않습니다: 판정은 이 브라우저에서 돌고 결과를 되쏠 자리가 코드에 없습니다.

헌법 추가 — 한 벌로 조립

헌법 하나는 저장소 여럿에 걸쳐 섭니다. 규범을 저작하는 저장소 하나(정본), 그리고 그것을 받는 저장소마다의 선언(연결)입니다. 아래에서 ① 헌법의 이름을 적고 ② 정본 저장소를 읽어 파일과 스코프를 고르고 ③ 연결 저장소들을 더하시면, 그 헌법에 답하는 저장소 전부의 선언(graduand.json)이 한 번에 조립됩니다.

⛔ 이 화면은 쓰지도 커밋하지도 않습니다. 화면은 문자열만 내놓고 파일로 쓰는 일은 여러분 기계에서 도는 명령의 몫입니다. 조립하는 손이 같은 하나라 두 입구의 산출은 바이트까지 같습니다.

한 저장소가 헌법 여럿에 답할 수 있습니다. 축마다 정본이 따로 섭니다. 개발 헌법과 디자인 헌법이 서로 다른 상류에 살아도 한 선언이 둘을 가리킵니다. ⛔ 이름은 여러분이 지으십니다: 공백과 : 만 못 씁니다(판정 칸의 이름이 판정기:축 이라서입니다). ⭐ 여기 적은 이름 하나가 아래에서 나올 선언 전부에 같은 자구로 들어갑니다.

② 정본 선언 — 이 저장소가 정본입니다

규범을 저작하는 저장소의 선언입니다. 박제도 정본 주소도 적지 않습니다. 자기가 정본이면 박제하지 않습니다. ⭐ 정본 저장소는 하나입니다: 축 하나가 가리키는 정본이 하나라서이고, 정본이 둘인 헌법은 정본이 없는 헌법입니다. ⭐ 저장소 · 파일 · 스코프를 주소로 받습니다 — 그래서 비공개 저장소의 선언도 여기서 조립됩니다(저희가 읽지 못하는 저장소여도 여러분은 적을 수 있습니다).

저장소 루트 기준 상대 경로입니다. ⛔ 절대 경로와 ~ 는 받지 않습니다. 한 축이 파일을 여럿 들 수도 있습니다 — 그 선언이 필요하시면 터미널 탭의 --file 이 반복됩니다.

어댑터가 값을 읽는 자리입니다 — CSS 커스텀 속성이면 :root 나 @theme 같은 선택자입니다. 스코프는 하나입니다: 축 하나가 드는 스코프가 하나라서입니다.

⭕ 고르는 일이 아니라 확인하는 일입니다. 누르면 그 저장소를 읽어 적으신 파일이 실재하는지, 그 스코프에서 값이 하나라도 읽히는지 봅니다. ⛔ 비공개 저장소는 이 브라우저가 읽지 못합니다 — 누르지 않으셔도 조립은 섭니다. 그때 남는 것은 「참이다」가 아니라 「저희가 묻지 않았다」이고, 그 둘은 같은 자리가 아닙니다.

③ 연결 선언 — 정본은 다른 저장소입니다

정본의 주소를 가리키고 박제 값을 그 저장소에서 읽어 적습니다. ⛔ 손으로 옮기지 않습니다: 저장소 N 개에 같은 값을 손으로 적는 행위가 바로 갈라짐의 생산 공정이고 이 제품은 그 갈라짐을 잽니다. ⭐ 선언이 이미 있는 저장소에는 그 선언에 축 하나를 더한 전문이 나옵니다. ⭐ 정본 선언이 아직 커밋되지 않았어도 됩니다 — 박제는 위에서 방금 조립한 정본 선언을 기준으로 읽힙니다. ⚠️ 다만 박제는 정본을 읽어야 적을 수 있습니다: 정본이 비공개면 이 화면은 연결 선언을 내지 못하고, 그 자리는 터미널 탭의 graduand link 입니다(여러분 기계에는 두 체크아웃이 다 있습니다).

각 조각을 그 저장소 루트의 graduand.json 으로 커밋하시면 루트의 진단이 그 저장소를 읽어 수를 냅니다. 정본을 가리키는 선언이면 「박제 == 정본」까지 함께 봅니다.

터미널에서 같은 것을 조립합니다

체크아웃이 손에 있으면 명령이 선언을 직접 씁니다. 조립하는 손은 위 화면과 같은 함수 하나라 두 입구의 산출은 바이트까지 같습니다. ⛔ 커밋은 하지 않습니다: 쓰는 것과 이력에 넣는 것은 다른 행위이고 둘째는 여러분의 몫입니다.

아래 값은 예시입니다 — 헌법의 이름 design, 정본 저장소 acme/design, 파일 tokens.css, 스코프 :root. 여러분의 이름과 주소로 바꿔 치십시오.

  1. 정본 저장소의 체크아웃에서 — 「여기가 정본이다」를 적습니다

    npx graduand canon --axis design --adapter css-custom-properties --file tokens.css --scope :root

    --file 은 반복됩니다(파일 여럿). 조립은 선언을 믿지 않고 읽어 봅니다: 적은 파일이 실재하지 않거나 그 스코프에서 값이 하나도 읽히지 않으면 쓰지 않고 거절합니다. ⛔ 선언이 이미 있으면 덮어쓰지 않습니다 — 조립한 전문을 표준출력으로 내보내고, 옮기는 것은 여러분입니다.

  2. 연결 저장소의 체크아웃에서 — 「정본은 저기이고 값은 이것이다」를 적습니다

    npx graduand link --axis design --canon acme/design --canon-file tokens.css --canon-scope :root --root . --root ../design

    --root 가 여럿인 것이 이 걸음의 핵입니다. 첫 자리가 쓸 저장소이고 나머지가 시야입니다 — 박제 값을 손으로 받지 않고 정본 체크아웃에서 읽기 때문입니다. ⛔ 정본이 시야에 없으면 빈 박제를 쓰지 않고 거절합니다: 어디서도 읽지 않은 박제는 지어낸 기준입니다.

  3. 무엇이 분모로 섰는지 확인합니다

    npx graduand rules

    선언이 무엇을 분모로 세웠는가를 냅니다 — 편입 규칙과 그 규칙이 고른 판정기, 공유값 축마다의 정본 주소, 면제와 그 만기입니다. ⛔ 판정하지 않습니다: 빨강이 없고, 분모를 묻는 행위는 무엇도 위반하지 않습니다.

  4. 판정합니다

    npx graduand --root . --root ../design

    답은 통과 · 위반 · 미판정 셋뿐입니다. 보지 못한 칸을 통과로 세지 않습니다. 교차 축(「박제 == 정본」)까지 재려면 여기서도 정본 체크아웃을 --root 로 함께 보여 주십시오 — 저장소 하나만 보는 시야는 저장소 사이의 갈라짐을 원리상 보지 못합니다.