问题标签 [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.
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 中围绕它的逻辑的方法。
bazel - 执行从 bazel 规则作为参数传递的打字稿文件
我在 js 中为单声道回购编写了一个 bazel 规则。这背后的想法是mono repo(微服务)中的服务在开放的api模式文件中定义了api规范。在我们的例子中,这些模式在 ts 文件中,因为规范被破坏,因为每个路由和最终规范文件导入每个路由模式并集成到最终对象。
我想在一个集中位置编写一个 bazel 规则,以便每个项目都可以加载该规则并使用它的模式文件调用它
我不确定是否所有模式文件( openapi.schema.ts 导入其他 ts 文件)都需要对规则可用。
在规则中,我有一个 ts 代码,我想在其中引用传递的模式文件并生成yaml
文件。(如下所示,我知道静态导入不起作用)
我创建了一个节点可执行文件以从代码运行,ts-node
但问题是我们提供的输入也是ts
文件,因此需要先编译。
我可以想到两种可能的方法来解决这个问题,但我都不确定该怎么做。
ts
在从服务传递到规则之前编译架构。(使用 ats_library
并将输出传递给规则?)- 在规则处创建 ts 可执行文件(
ts-node
在 bzl 文件中使用)传递源文件连接generateYml.ts
和模式文件传递。
github上提供了带有 bazel 设置的简单项目
我写了一个规则来从项目中获取一个 json 文件并生成build/rules/json2yaml
可以工作的 yaml。
努力在build/rules/ts-yaml
.
我的问题如下
- 我可以使用
ts_library
并传递输出 bazel 规则吗? - 我可以从服务传递 ts 文件并从规则 sile 编译和执行逻辑(更好)吗?
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
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'
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 中,但我真的不知道如何解决这个问题。
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 上。