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",
)