解决 Bazel monorepo 中的本地 NodeJS 依赖关系

Ian*_*ham 5 node.js bazel

我正在尝试学习如何使用 Bazel 设置 monorepo。我的代码在 GitHub 上

我在 Mac OS 10.14.5 上使用bazelbuild/rules_nodejs版本 0.37 和 Bazel 0.29.1-homebrew。

我遇到的问题是,在bazelbuild/rules_nodejsrequire运行规则时,库模块的 找不到生成的库。rollup_bundle

我认为我的配置中有一些错误,但通过阅读文档并不清楚。相关代码部分复制在下面,但最新版本将始终在存储库中。

代码和构建文件

/WORKSPACE

workspace(
    name = "bazel_example",
    managed_directories = {"@npm": ["node_modules"]},
)

# load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "build_bazel_rules_nodejs",
    sha256 = "0d9660cf0894f1fe1e9840818553e0080fbce0851169812d77a70bdb9981c946",
    urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.37.0/rules_nodejs-0.37.0.tar.gz"],
)

load("@build_bazel_rules_nodejs//:defs.bzl", "yarn_install")
yarn_install(
    name = 'npm',
    package_json = '//:package.json',
    yarn_lock = '//:yarn.lock',
)

load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies")
install_bazel_dependencies()

# Set up TypeScript toolchain
load("@npm_bazel_typescript//:index.bzl", "ts_setup_workspace")
ts_setup_workspace()

Run Code Online (Sandbox Code Playgroud)

在 中/apps/jsapp003,我有一个简单的“Hello world”应用程序,使用来自同一存储库 ( ) 的库/libs/jslib001

/libs/jslib001/index.js

module.exports = () => 'Hello world'
Run Code Online (Sandbox Code Playgroud)

/libs/jslib001/BUILD.bazel

package(default_visibility = ["//visibility:public"])

load("@build_bazel_rules_nodejs//:defs.bzl", "npm_package")

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

npm_package(
    name = 'pkg',
    srcs = [
        'package.json',
    ],
    deps = [
        ':src'
    ],
)

Run Code Online (Sandbox Code Playgroud)

/apps/jsapp003/index.js

const jslib001 = require('jslib001')

module.exports = () => {
    console.log(jslib001())
}
Run Code Online (Sandbox Code Playgroud)

/apps/jsapp003/BUILD.bazel

package(default_visibility = ["//visibility:public"])

load("@build_bazel_rules_nodejs//:defs.bzl", "npm_package", "nodejs_binary", "rollup_bundle")

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

npm_package(
    name = 'pkg',
    srcs = [
        'package.json'
    ],
    deps = [
        ':src',
        '//libs/jslib001:pkg'
    ],
)

nodejs_binary(
    name = 'bin',
    entry_point = ':index.js',
    data = [
        ':pkg'
    ]
)

rollup_bundle(
    name = 'bundle',
    entry_point = ':index.js',
    deps = [
        ':pkg',
    ],
)
Run Code Online (Sandbox Code Playgroud)

构建命令和错误信息

bazel build ...
INFO: Analyzed 12 targets (0 packages loaded, 14 targets configured).
INFO: Found 12 targets...
ERROR: /Users/ian/code/bazel-example/apps/jsapp003/BUILD.bazel:31:1: Bundling JavaScript apps/jsapp003/bund
le_chunks_es2015 [rollup] failed (Exit 1) rollup.sh failed: error executing command bazel-out/host/bin/external/
build_bazel_rules_nodejs/internal/rollup/rollup.sh --config bazel-out/darwin-fastbuild/bin/apps/jsapp003/_bundle
.rollup.conf.js --output.dir ... (remaining 3 argument(s) skipped)

Use --sandbox_debug to see verbose messages from the sandbox
[!] (commonjs plugin) Error: Could not resolve import 'jslib001' from '/private/var/tmp/ian/17079101
d889bedf61702aa4af25ca27/sandbox/darwin-sandbox/74/execroot/bazel_example/bazel-out/darwin-fastbuild/bin/apps/jsapp003/bundle.es6/apps/jsapp003/index.js'
Error: Could not resolve import 'jslib001' from '/private/var/tmp/_bazel_ian/17079101d889bedf61702aa4af25ca27/sandbox/darwin-sandbox/74/execroot/bazel_example/bazel-out/darwin-fastbuild/bin/apps/jsapp003/bundle.es6/apps/jsapp003/index.js'
    at Object.notResolved (/private/var/tmp/_bazel_ian/17079101d889bedf61702aa4af25ca27/execroot/bazel_example/bazel-out/darwin-fastbuild/bin/apps/jsapp003/_bundle.rollup.conf.js:148:9)
    at /private/var/tmp/_bazel_ian/17079101d889bedf61702aa4af25ca27/sandbox/darwin-sandbox/74/execroot/bazel_example/bazel-out/host/bin/external/build_bazel_rules_nodejs/internal/rollup/rollup.sh.runfiles/build_bazel_rules_nodejs_rollup_deps/node_modules/rollup-plugin-commonjs/src/utils.js:20:68

INFO: Elapsed time: 10.651s, Critical Path: 7.74s
INFO: 4 processes: 4 local.
FAILED: Build did NOT complete successfully
Run Code Online (Sandbox Code Playgroud)