boundaries

实验性

边界通过检查程序包管理器工作区(Workspace)的违规行为,确保 Turborepo 功能正常运行。

终端
turbo boundaries

边界 RFC

此功能尚处于实验阶段,我们正在征求您对 Boundaries RFC 的反馈。

此命令将针对两种类型的违规行为发出通知:

  • 导入包目录之外的文件
  • 导入未在包的 package.json 中指定为依赖项的包

标签(Tags)

边界还提供了一项功能,允许您为包添加标签。这些标签可用于创建边界检查规则。例如,您可以为您的 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"]
        }
      }
    }
  }
}

同样,您可以为标签的依赖项(即导入带有该标签的包的包)添加限制。

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

包名称也可以在允许和拒绝列表中代替标签使用。

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

标签可让您确保在您的图中不会错误地导入某个包。这些规则甚至适用于依赖项的依赖项,因此如果您导入了一个包,而该包又导入了另一个带有被拒绝标签的包,您仍然会收到规则违规通知。