簡體   English   中英

如何在Node.js中使用Bazel

[英]How to use Bazel with Node.js

我的理解是,Bazel希望項目在monorepo下,並且在每個項目的頂層都有WORKSPACE文件,在每個項目中都有BUILD文件:

Repo
├── ProjectA
│   └── BUILD
├── ProjectB
│   └── BUILD
└── WORKSPACE

但是, 仔細閱讀Bazel NodeJS規則文檔 ,似乎建議每個項目都應具有自己的WORKSPACE文件,用於定義其依賴項。 即...

Repo
├── ProjectA
│   ├── BUILD
│   └── WORKSPACE
└── ProjectB
    ├── BUILD
    └── WORKSPACE

這看起來類似於多倉庫,每個項目都將其他項目作為外部依賴項引用,這對我來說似乎還可以,直到我意識到對於外部依賴項, Bazel要求在每個包的WORKSPACE文件中指定所有傳遞性依賴項 ,絕對不理想。

在NodeJS項目中使用Bazel的最簡單方法是什么,而某些項目可能是用其他語言編寫的? 此外,在某個地方是否有在多倉庫環境中使用Bazel的示例?

謝謝!

我認為實際上有2種可能的選擇

Repo ├── MyProject │ └── BUILD ├── third_party │ └── ProjectB │ └─ BUILD └── WORKSPACE

要么

Repo ├── MyProject │ └── BUILD └── WORKSPACE ,在第二種情況下,WORKSPACE使用npm_install規則引用ProjectB,如在https://github.com/bazelbuild/rules_nodejs#using-bazel-managed-dependencies中定義

我仍在嘗試自己解決這個問題,但是到目前為止,我所收集的是在回購的根目錄下只有一個WORKSPACE文件。 您需要有一個package.json文件(可能在根目錄),其中包含整個存儲庫中使用的所有依賴項,然后在WORKSPACE文件中調用npm_installyarn_install來下載所有文件。

然后,您的程序包BUILD文件可以使用@npm//some_package引用依賴項,如下所示:

filegroup(
  name = 'sources',
  srcs = ['index.js'],
)

npm_package(
  name = 'pkg',
  srcs = [ 'package.json'],
  deps = [
    ':sources'
    '@npm//lodash'
  ],
)

我還沒有弄清幾種不同的依賴邊緣情況,因此這可能不是完全正確的。 祝好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM