问题标签 [bazel-rules-nodejs]

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 投票
1 回答
266 浏览

typescript - 使用 Bazel + Typescript + Jest 测试覆盖率报告

我正在将一个 Node.js 库转换为使用 Bazel 作为构建系统。到目前为止,我已经设法让我的 TS 规则和基本的 Jest 测试执行工作。你可以在这里设置:

https://github.com/lqc/bazel-examples/tree/master/nodejs_typescript_runnable

所以跑步bazel test //app:test给了我一个正确的 Junit 报告bazel-testlogs

运行bazel coverage //app:test运行测试,但不会产生我期望的 LCOV 报告。

据我所知,Bazel 使用 C8 NPM 包来启用 V8 中的内置覆盖功能(我必须将其添加到我的依赖项中)。同时,Jest 还可以选择使用 V8 作为覆盖提供者。

我应该在 Jest 中配置它吗?在 Jest 中禁用它?我完全可以在 Jest 中配置它,但我看不到禁用 Bazel 中围绕它的逻辑的方法。

0 投票
1 回答
67 浏览

bazel - 执行从 bazel 规则作为参数传递的打字稿文件

我在 js 中为单声道回购编写了一个 bazel 规则。这背后的想法是mono repo(微服务)中的服务在开放的api模式文件中定义了api规范。在我们的例子中,这些模式在 ts 文件中,因为规范被破坏,因为每个路由和最终规范文件导入每个路由模式并集成到最终对象。

我想在一个集中位置编写一个 bazel 规则,以便每个项目都可以加载该规则并使用它的模式文件调用它

我不确定是否所有模式文件( openapi.schema.ts 导入其他 ts 文件)都需要对规则可用。

在规则中,我有一个 ts 代码,我想在其中引用传递的模式文件并生成yaml文件。(如下所示,我知道静态导入不起作用)

我创建了一个节点可执行文件以从代码运行,ts-node但问题是我们提供的输入也是ts文件,因此需要先编译。

我可以想到两种可能的方法来解决这个问题,但我都不确定该怎么做。

  1. ts在从服务传递到规则之前编译架构。(使用 ats_library并将输出传递给规则?)
  2. 在规则处创建 ts 可执行文件(ts-node在 bzl 文件中使用)传递源文件连接generateYml.ts和模式文件传递。

github上提供了带有 bazel 设置的简单项目

我写了一个规则来从项目中获取一个 json 文件并生成build/rules/json2yaml可以工作的 yaml。

努力在build/rules/ts-yaml.

我的问题如下

  • 我可以使用ts_library并传递输出 bazel 规则吗?
  • 我可以从服务传递 ts 文件并从规则 sile 编译和执行逻辑(更好)吗?
0 投票
2 回答
293 浏览

node.js - 无法使用 Puppeteer 运行 Bazel nodejs_image(错误:libgobject-2.0.so.0)

我正在使用 Bazel 构建 Docker 容器:

运行nodejs_binary正常。

但是运行nodejs_image“图像”会引发错误:


因此,我尝试添加一个自定义base这个)图像,如下所示:

并在WORKSPACE

但是运行更新的nodejs_image“base_image”会引发此错误:


如何将缺少的依赖项添加到nodejs_image?

可以在此处找到该问题的最小再现:https ://github.com/flolu/bazel-node-puppeteer

0 投票
1 回答
103 浏览

bazel - 在 rules_nodejs bazel 中运行 yarn_install (或 npm_install )后如何访问 node_modules 文件夹?

我对 Bazel 比较陌生,但这花费的时间比我认为的要长。我yarn_install在我的工作区做,我只是想引用安装的node_modules,这样我就可以把它们放在我的新 docker 容器中。

工作区

构建.bazel

我已经能够获得特定的软件包(即@npm//express)但是如果我尝试访问 node_modules 那么我就会得到

no such package '@npm//node_modules': Package is considered deleted due to --deleted_packages and referenced by '//:webapi_image'

0 投票
1 回答
83 浏览

bazel - 运行nodejs_image时,`Bazel run`不会在bazel-bin中找到静态文件依赖项

我正在尝试让规则泊坞窗nodejs_image使用 bazel 运行。

我的命令是

bazel run :image.binary

这是我的规则:

基本上,我需要该package.json文件,因为它包含 Node 执行时的一些重要配置信息。如果我打电话bazel build :image然后抓取/运行该图像,一切正常。但是,如果我调用bazel run :image它,它基本上会起作用,只是它找不到package.json.

当我检查bazel-bin/文件夹时,我注意到package.json不包括在内,但内置的 typescript 和 node_modules 是。我猜是因为我没有在 package.json 上运行任何先前的规则,它没有被添加到 bin 中,但我真的不知道如何解决这个问题。

0 投票
0 回答
26 浏览

angular - 测试在测试 bazel 角度项目中不起作用 OOTB

尝试在测试 Bazel 角度项目中运行测试: https ://github.com/bazelbuild/rules_nodejs/tree/stable/examples/angular

运行测试:

第一次尝试错误:

第一个问题我解决了 fith flag--nobuild_runfile_links问题,问题是二进制路径中的空间,.../Chromium Framework.framework/Chromium Framework对我来说真的很奇怪。

第二次尝试错误:

在对日志进行简短调查后,我了解到我们在 chromium 和 firefox 的两个平台上运行测试(其中 firefox 失败):

我们可以看到 Chromium 测试运行良好:

但是 Firefox 测试失败,来自日志的错误:

为了解决 Firefox 问题,我刚刚在 bazel 中评论了一行:

问题:

是已知问题吗?还是我的环境问题既不是 bazel 问题?

Chrome 和 Firefox 浏览器都安装在我的 MacOS BigSur 上。