首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Bazel只清理缓存规则的一个子集。

Bazel只清理缓存规则的一个子集。
EN

Stack Overflow用户
提问于 2022-05-20 22:01:17
回答 1查看 250关注 0票数 1

我目前正在开发一个具有相当大的工作区文件的monorepo。

现在,我注意到我的测试规则之一,就是在更新我的测试时没有重新构建它的依赖规则。以下是其中的一个例子:

代码语言:javascript
运行
复制
load("@npm//@grafana/toolkit:index.bzl", "grafana_toolkit")
load("@build_bazel_rules_nodejs//:index.bzl", "copy_to_bin")

APPLICATION_DEPS = glob(
    [   
        # My updated test file is included in this glob
        "src/**/*", 
    ],
) + [
    "my-config-files.json"
]

RULE_DEPS = [
    "@npm//@grafana/data",
    "@npm//@grafana/ui",
    "@npm//emotion",
    "@npm//fs-extra",
]

copy_to_bin(
    name = "bin_files",
    srcs = APPLICATION_DEPS,
)


grafana_toolkit(
    name = "test",
    args = [
        "plugin:test",
    ],
    chdir = package_name(),
    data = RULE_DEPS + [
        ":bin_files",
    ],
)

然后,我有一个名为“something.test.ts”的文件。我运行bazel run :test,我的测试可能会显示我失败了,我发现了问题并修复了它。问题是,下次我运行我的测试时,我从输出中看到它仍然失败,因为它正在运行旧的测试而不是新的测试。

问题

我通常通过运行bazel clean来解决陈旧文件不更新的问题。问题是做bazel clean意味着我清理了所有的东西。这使得重新运行所有的构建步骤花费了相当长的时间。我想知道是否有一种方法可以指定我只清理缓存的一个子集(例如,可能只有我的bin_files规则的输出)。那样的话,我只会重建我想要重建的东西,而不是重新开始。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-06 15:43:17

实际上,我找到了一种非常快速和简单的方法来完成我最初要求的事情,基本上就是转到bazel-bin目录,并删除我想要重新运行的任何规则的输出。因此,在这种情况下,我可以删除bazel目录中的bin_files输出,然后再运行我的bin_files规则。

话虽如此,我认为@ahumsky可能是正确的,如果你需要这样做,它更可能是一个错误与其他东西。在我的例子中,我运行的是规则的构建版本,而不是规则的测试版本。因此,清理缓存中的一个子集与我最初的问题并没有任何关系。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72325164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档