Как я могу заставить правило Bazel влиять на исходное дерево исходного кода?
У меня есть два правила Базеля: один, который создаетnode_modules.tar
файл, и тот, который разбивает tar на настоящие файлы.
Когда я запускаю сборку с помощьюbazel build //node_modules_ls
Я обнаружил, что он взрывает смолу в другую среду.bazel-out
, символическая ссылка на другое место. Если я добавлюlocal=True
, это повлияет на мое фактическое дерево исходного кода.
Это предполагаемое использование дляlocal
? Есть ли лучший способ добиться того, что я хочу здесь? На самом деле я хочу повлиять на свое дерево исходного кода, потому что у меня не было времени использовать Bazel для всех моих сценариев сборки.
genrule(
name = "node_modules_ls",
local = True, # Added this line to fix my issue!
srcs = [
":node_modules",
],
cmd = " && ".join([
"tar xf $(location :node_modules)",
"tar tf $(location :node_modules) > $@",
]),
outs = [
"out.txt",
],
)
genrule(
name = "node_modules",
srcs = [
"package.json",
"bun.lockb",
],
cmd = " && ".join([
"(cd packages/api && bun install --frozen-lockfile)",
"tar cf $(location :node_modules.tar) packages/api/node_modules/",
]),
outs = [
"node_modules.tar",
],
)