问题标签 [bazel-gazelle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
415 浏览

go - Bazel 使用第三方库构建错误 - 没有这样的包

我正在使用 bazel 4.1.0 来构建项目。当前设置:

go.mod 文件

工作区文件

在 repositories.blz 文件中

在学生/api.v1/api.proto 文件中

运行bazel run //:gazelle -- update-repos -from_file=go.mod -to_macro=repositories.bzl%go_repositories -prune=truebazel run //:gazelle

它生成students/api.v1/BUILD.bazel文件

当我运行时bazel build //...,它会产生错误

我想让构建工作没有错误。非常感谢您的帮助。我认为在BUILD.bazel文件中,//github.com/mwitkow/go-proto-validators:validators_proto应该是@github.com/mwitkow/go-proto-validators:validators_proto@go_googleapis//google/api:annotations_proto但它只是一个模糊的想法。

0 投票
0 回答
30 浏览

go - 是否可以使用 Gazelle 自动加载传递依赖项?

我想使用 Gazelle 在 Bazel 中管理我的 Go 依赖项(及其依赖项)。运行bazel run //:gazelle update-repos firebase.google.com/go将正确配置添加go_repository到我的WORKSPACE文件中:

但是,这不是开箱即用的。运行bazel build @com_google_firebase_go//:go_default_library返回错误:

有没有办法告诉瞪羚加载@org_golang_google_api传递依赖和其他而不需要update-repos为每个运行?

0 投票
1 回答
37 浏览

go - 如何让 bazel/gazelle go_repository 导入过去 go vet

我正在使用 bazel/gazelle 来引入一些外部 git 存储库。例如:

github.com/pkg/errors我的 go 文件会像往常一样导入。当我go vet在我的文件上运行时出现问题。它会抱怨在 GOROOT 或 GOPATH 下不存在这样的包。这个 repo 位于我的 bazel 缓存中。~/.cache/bazel/.../external/com_github_pkg_errors

我该如何解决这个问题?

0 投票
0 回答
47 浏览

go - 未定义:gomock.AssignableToTypeOf

我收到此错误:未定义:gomock.AssignableToTypeOf 使用包 github.com/golang/mock 的函数 gomock.AssignableToTypeOf 时发生“

当我在 Project 的 WORKSPACE 文件中更新版本时开始发生这种情况,并且执行bazel coverage命令时出现的错误未定义:gomock.AssignableToTypeOf Bazel 版本:4.2.1 Bazel 规则版本:v0.30.0 bazel_gazelle 版本:v0。 24.0 Go 版本:1.17.6 Docker 规则版本:0.23.0

它在以前的版本上运行良好—— Bazel 版本:3.7.1 Bazel 规则版本:v0.27.0 bazel_gazelle 版本:v0.23.0 Go 版本:1.16 Docker 规则版本:0.14.4

这是 WORKSPACE 文件的代码片段。

0 投票
1 回答
18 浏览

go - 如何在 Go Gazelle 项目中使用 Bazel 平台转换

我有一个使用 Gazelle 设置的(纯)Go 项目。它有一个主二进制文件,它cmd/main/BUILD由 Gazelle 生成,如下所示:

我可以为我的主机系统构建二进制文件,或者通过传递--platforms=@io_bazel_rules_go//go/toolchain:linux_arm64命令行为我们的部署目标构建二进制文件。但是现在,我希望能够为两个平台创建一个包含构建的 tar,而无需使用不同的 CLI 参数调用 Bazel。

正如这里所推荐的(“您可以通过 //command_line_option:platforms 上的 Bazel 配置转换等效地依赖 go_binary 或 go_test 规则”),我正在尝试使用转换进行设置。

我的transitions.bzl文件:

但是现在,我不知道如何将转换附加到 Gazelle 生成的 go_binary 规则。我的根构建文件: