boundaries

실험적 기능

Boundaries는 패키지 매니저 Workspace 위반을 검사하여 Turborepo 기능이 올바르게 작동하도록 보장합니다.

Terminal
turbo boundaries

Boundaries RFC

이 기능은 실험적이며, Boundaries RFC에 대한 여러분의 피드백을 기다리고 있습니다.

이 명령어는 두 가지 유형의 위반을 알려줍니다:

  • 패키지 디렉토리 외부의 파일 가져오기
  • 패키지의 package.json에 의존성으로 지정되지 않은 패키지 가져오기

Tags

Boundaries는 패키지에 태그를 추가할 수 있는 기능도 제공합니다. 이러한 태그는 Boundaries가 확인할 규칙을 만드는 데 사용할 수 있습니다. 예를 들어, UI 패키지에 internal 태그를 추가할 수 있습니다:

Turborepo logo
./packages/ui/turbo.json
{
  "tags": ["internal"]
}

그런 다음 public 태그가 있는 패키지가 internal 태그가 있는 패키지에 의존할 수 없다는 규칙을 선언할 수 있습니다:

Turborepo logo
./turbo.json
{
  "boundaries": {
    "tags": {
      "public": {
        "dependencies": {
          "deny": ["internal"]
        }
      }
    }
  }
}

또는 public 패키지가 다른 public 패키지에만 의존하도록 할 수도 있습니다:

Turborepo logo
turbo.json
{
  "boundaries": {
    "tags": {
      "public": {
        "dependencies": {
          "allow": ["public"]
        }
      }
    }
  }
}

마찬가지로, 태그의 의존 대상(dependents), 즉 해당 태그가 있는 패키지를 가져오는 패키지에 대한 제한을 추가할 수 있습니다.

Turborepo logo
turbo.json
{
  "boundaries": {
    "tags": {
      "private": {
        "dependents": {
          "deny": ["public"]
        }
      }
    }
  }
}

허용 및 거부 목록에서 태그 대신 패키지 이름을 사용할 수도 있습니다.

Turborepo logo
turbo.json
{
  "boundaries": {
    "tags": {
      "private": {
        "dependents": {
          "deny": ["@repo/my-pkg"]
        }
      }
    }
  }
}

태그를 사용하면 그래프 어딘가에서 잘못된 패키지가 가져오지 않도록 보장할 수 있습니다. 이러한 규칙은 의존성의 의존성에도 적용되므로, 거부된 태그가 있는 다른 패키지를 가져오는 패키지를 가져오면 여전히 규칙 위반이 발생합니다.