我正在尝试将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/
据我所知,这是构建一个 Web 应用程序的过程。如果我将
/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”是目录的投诉,有时则会抱怨正在使用只读文件系统。
我的期望是,如果我能够在没有bazel的情况下运行npm run build
或webpack
,那么我应该能够在使用bazel时运行它。在我看来,这似乎应该是bazel的某种中间步骤,类似于部署,并使用来自webpack的结果。我甚至可以将所有结果压缩在/dist
中,但仍然不确定如何使bazel接受它。
我能否以某种方式告诉bazel“制作文件webpacked.zip
,然后在你的下一步中使用它”?
到目前为止,我的研究结果很少表明这要么非常复杂,要么不可能,很可能不是这些工具的正确使用方式。任何帮助都将不胜感激。