いくつかの JS パッケージを含み、Yarn ワークスペースで編成されたプロジェクトがあります。
<root>
├── WORKSPACE
├── package.json
├── workspaces
│ ├── foo
│ │ ├── package.json
│ │ ├── BUILD.bazel
│ │ ├── src
│
├── bar
│ ├── package.json
│ ├── BUILD.bazel
│ ├── src
FOO
package は package に依存しBAR
、で定義されていFOO/package.json
ます:
workspaces/foo/package.json
{
"name": "FOO",
"dependencies": {
"BAR": "link:../bar",
}
workspaces/bar/BUILD.bazel
このように見えます
load("@build_bazel_rules_nodejs//:index.bzl", "js_library")
js_library(
name = "bar",
package_name = "BAR",
srcs = [
"package.json",
"index.js",
],
visibility = ["//visibility:public"],
)
そしてここworkspaces/foo/BUILD.bazel
load("@build_bazel_rules_nodejs//:index.bzl", "js_library")
js_library(
name = "foo",
package_name = "FOO",
srcs = [
"package.json",
"index.js",
],
deps = [
"//workspaces/bar:bar",
"@npm//:node_modules" # <-- this line causes an error because linked package couldn't be found in node_modules
],
visibility = ["//visibility:public"],
)
WORKSPACE
ファイルには以下が含まれます。
yarn_install(
name = "npm_foo",
package_json = "//workspaces/foo:package.json",
yarn_lock = "//workspaces/foo:yarn.lock",
package_path = "workspaces/foo",
strict_visibility = False,
# links = {
# "bar": "//workspaces/bar",
# },
# generate_local_modules_build_files = True,
)
yarn_install(
name = "npm",
package_json = "//:package.json",
yarn_lock = "//:yarn.lock",
)
yarn_install(
name = "npm_bar",
package_json = "//workspaces/bar:package.json",
yarn_lock = "//workspaces/bar:yarn.lock",
package_path = "workspaces/bar",
)
このセットアップのすべてで、実行bazel build //workspaces/foo:foo
して失敗します。links
で構成またはgenerate_local_modules_build_files
属性を設定する必要がありますyarn_install
か? または、このリンクされたパッケージを連携させるために必要な変更は何ですか?