turbo boundaries

Experimental

边界通过检查包管理器工作区违规情况,确保 Turborepo 功能正常工作。

Terminal
turbo boundaries

Boundaries RFC

这个功能是实验性的,我们正在寻求你对 Boundaries RFC 的反馈。

此命令将通知两类违规情况:

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

标签

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"]
        }
      }
    }
  }
}

同样,你可以为标签的依赖方添加限制,即导入带有该标签的包的包。

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

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

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

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