expand_template 使用 make 变量

expand_template with make variables

我有一个看似简单的任务却让我很为难:使用用户定义的变量扩展模板。

我有一个文件(模板),其中有一个我需要替换的变量:

$key_selection_color: @SELECTION_COLOR@;

我决定这样使用 expand_template

expand_template(
    name = "key_colors",
    out = "_key_colors.scss",
    substitutions = {
        "@SELECTION_COLOR@": "$(FOO)",
    },
    template = "_key_colors.scss.in",
)

但是,当我 运行 bazel build --define FOO=000000 //:key_colors$(FOO) 没有被替换时,我的 _key_colors.scss 文件变成:

$key_selection_color: $(FOO);

我做错了什么,我应该怎么做才能达到预期的效果?谢谢!

此规则的 bazel-skylib 实施不支持替换替换中的变量,同样它不支持扩展位置等(在撰写本文时)。它是 ctx.actions.expand_template.

的一个非常轻的包装器

但是,aspect-build/bazel-lib implementation of expand_template does support these substitutions. See the docs 了解更多信息。