当 运行ning nodejs_image 时,`Bazel 运行` 将无法在 bazel-bin 中找到静态文件依赖项
`Bazel run` won't find static file dependency in bazel-bin when running nodejs_image
我正在尝试使用 bazel 获取规则 docker nodejs_image
到 运行。
我的命令是
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",
)
基本上,我需要 package.json
文件,因为它包含了 Node 执行时的一些重要配置信息。如果我调用 bazel build :image
然后 grab/run 该图像,一切正常。但是如果我调用 bazel run :image
它基本上可以工作,只是它找不到 package.json
.
当我检查 bazel-bin/
文件夹时,我注意到 package.json
未包含在内,但内置的打字稿和 node_modules 包含在内。我猜是因为我没有 运行 在 package.json 上设置任何先前的规则,它没有被添加到垃圾箱,但我真的不知道如何解决这个问题。
所以,基本上,如果您只是使用像 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",
)
我正在尝试使用 bazel 获取规则 docker nodejs_image
到 运行。
我的命令是
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",
)
基本上,我需要 package.json
文件,因为它包含了 Node 执行时的一些重要配置信息。如果我调用 bazel build :image
然后 grab/run 该图像,一切正常。但是如果我调用 bazel run :image
它基本上可以工作,只是它找不到 package.json
.
当我检查 bazel-bin/
文件夹时,我注意到 package.json
未包含在内,但内置的打字稿和 node_modules 包含在内。我猜是因为我没有 运行 在 package.json 上设置任何先前的规则,它没有被添加到垃圾箱,但我真的不知道如何解决这个问题。
所以,基本上,如果您只是使用像 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",
)