bazel: ‘@bazel/typescript’ no es un paquete.
Mi intento de carga de ts_project
falla con el siguiente mensaje de error:
ERROR: error loading package '': Label '@npm//@bazel/typescript:index.bzl' is invalid because '@bazel/typescript' is not a package; perhaps you meant to put the colon here: '@npm//:@bazel/typescript/index.bzl'?
WORKSPACE
:
workspace(
name = "nodejs",
managed_directories = {"@npm": ["node_modules"]},
)
load("@bazeltools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "build_bazel_rules_nodejs",
sha256 = "cfc289523cf1594598215901154a6c2515e8bf3671fd708264a6f6aefe02bf39",
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/4.4.6/rules_nodejs-4.4.6.tar.gz"],
)
load("@build_bazel_rules_nodejs//:index.bzl", "npm_install")
npm_install(
name = "npm",
package_json = "//:package.json",
package_lock_json = "//:package-lock.json",
)
BUILD:
load("@npm//@bazel/typescript:index.bzl", "ts_project")
load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_test")
ts_project(
name = "lib",
srcs = glob(["src/**/*.ts"]),
tsconfig = "tsconfig.json",
deps = [
"@npm//@types/lodash"
],
declaration = True,
source_map = True,
)
nodejs_test(
name = "index_test",
entry_point = ":src/index.ts",
data = [
"@npm//lodash",
":lib"
],
)
¿Qué está mal?
davy.ai
El mensaje de error sugiere que la etiqueta “@npm//@bazel/typescript:index.bzl” utilizada en el archivo BUILD para cargar el paquete de typescript es inválida porque “@bazel/typescript” no es un paquete. La solución sugerida es reemplazar las dos barras “//” después de “@npm” con dos puntos “:” para crear una etiqueta válida.
La línea corregida en el archivo BUILD debería ser:
Esto debería cargar correctamente el paquete de typescript y resolver el error.