Bazel run nodejs_image не найдет ни одной из файловых зависимостей

Я пытаюсь установить докер правил nodejs_image запустить с помощью bazel.

Моя команда

bazel run :image.binary

Вот мое правило:

      load("@npm//@bazel/typescript:index.bzl", "ts_project")
load("@io_bazel_rules_docker//nodejs:image.bzl", "nodejs_image")

ts_project(
    name = "typescript_build",
    srcs = glob([
        "src/**/*",
    ]),
    allow_js = True,
    out_dir = "build",
    deps = ["@npm//:node_modules"],
)

nodejs_image(
    name = "image",
    data = [
        ":package.json",
        ":typescript_build",
        "@npm//:node_modules",
    ],
    entry_point = "build/app.js",
)

По сути, мне нужен файл, потому что он включает важную информацию о конфигурации при выполнении Node. Если я позвоню bazel build :imageа затем возьмите / запустите это изображение, все работает нормально. Но если я позвоню bazel run :image в основном он будет работать, за исключением того, что не может найти.

Когда я проверяю bazel-bin/ папку, я заметил, что package.jsonне включен, но встроенный машинописный текст и модули node_modules. Я предполагаю, поскольку я не использую какие-либо предыдущие правила для package.json, он не добавляется в корзину, но я действительно не знаю, как это обойти.

1 ответ

Итак, в основном кажется, что если вы просто используете правило вроде copy_to_binили же js_library, я думаю, что их цель - помочь поместить статические файлы в ваш bazel-bin.

https://bazelbuild.github.io/rules_nodejs/Built-ins.html#copy_to_bin

      ts_project(
    name = "typescript_build",
    srcs = glob([
        "src/**/*",
    ]),
    allow_js = True,
    out_dir = "build",
    deps = ["@npm//:node_modules"],
)

js_library(
    name = "library",
    srcs = ["package.json"],
    deps = [":typescript_build"],
)

nodejs_image(
    name = "image",
    data = [
        ":library",
        "@npm//:node_modules",
    ],
    entry_point = "build/app.js",
)
Другие вопросы по тегам