webpack - 集成 bazel 和 webpack
问题描述
我正在尝试将 webpack 带入由 bazel 构建的 monorepo 中。
我有类似的东西
source/
-moduleA/
-moduleB/
--package.json
--static/
---image.png
--source/
---foo.ts
---bar.js
---baz.jsx
我已经设置了我的webpack.config.js
,所以当我运行时,webpack
我会得到类似的东西:
dist/
-generated.html
-bundled.js
-copied/
--css/
--img/
据我所知,这构建了一个网络应用程序。如果我/dist
以某种方式提供服务,我的浏览器将加载generated.html
,这又会加载其他文件。
Bazel 不喜欢我的/dist
目录,但我无法理解我遇到的所有错误。我正在尝试运行这样的东西
genrule(
name = "webpack_stuff",
srcs = [
":deps"
],
cmd = " && ".join([
"cd source/core/viewer",
"node node_modules/webpack/bin/webpack.js --config webpack.prod.js --output-path $@",
]),
outs = ["dist"],
visibility = [
"//visibility:public",
],
)
我不完全确定我在调整时要调整什么,但有时我会抱怨“dist”是一个目录,有时它抱怨使用只读文件系统。
我的期望是,如果我能够运行npm run build
或webpack
不使用 bazel,我将能够使用 bazel 运行它。这看起来应该是 bazel 的一些中间步骤,因为它应该在我的外行头脑中做一些类似于部署的事情,结果来自 webpack。我什至可以压缩所有结果,/dist
但仍然不确定如何让 bazel 接受它。
我可以以某种方式告诉 bazel“制作文件webpacked.zip
,然后在接下来的步骤中使用它”吗?
到目前为止,我的研究很少有结果表明这要么非常复杂,要么不可能,而且很可能不是这些工具应该如何使用。任何帮助都将受到欢迎。
解决方案
genrule
不知道如何使用其outs
. 有几种方法:
压缩输出目录中的所有内容作为 .zip 中的最后一步
genrule
,并在outs
. 缺点是您必须在处理这些文件的每一步都进行压缩和解压缩(跳过压缩可能会加快一点速度)。编写 Starlark 规则,其中有用于处理目录输出的 API。有关如何执行此操作的更多信息在此问题中:Bazel: genrule that output a directory
nodejs bazel 规则似乎支持 webpack:https ://github.com/bazelbuild/rules_nodejs/tree/c5d09095ba4653b4cd5837360e13ff2b105ba3be/examples/react_webpack 所以也许可以尝试使用 nodejs 规则进行调查。
推荐阅读
- javascript - 按钮 - 数据表中的列可见性
- javascript - Odoo 13 ORM 写入方法的确认框
- amazon-web-services - AWS codebuild 列出其他账户的 s3 存储桶
- azure - 在使用 GRS(地理冗余存储)作为 azure 中的复制时,它显示的错误有人知道它什么时候会解决吗?
- android - 使用 bazel 将额外的原生库打包到 APK 中
- php - 如何将数据存储到数据库中并使用 codeigniter 生成总和
- java - 为什么下面java代码的输出是假的
- uiview - UIView.animate --> 无法转换值
- xamarin - 验证第三方指纹 - xamarin.forms
- arrays - 在 react native 中如何使用 json 数据重复相同的渲染 n 次,请毫不犹豫地解释清楚