aspect-build / aspect-build/rules_esbuild

[Bug]: rules_esbuild does not properly pass `deps` to js_binary

Open
#150 4 comments 0 reactions 1 assignee Claimed by @jbedard View on GitHub
bug
Dominant language
Starlark
Stars
35
Forks
45
Avg merge
1d 1h
Merged PRs (30d)
1

Description

### What happened?

I have an esbuild rule that I would assume is bundling a small config and it _should_ have dependencies built into the output. However, on CI we found that the bundled config was missing the node_modules that were passed into the `deps` array for the `esbuild` rule call. See example code below

```
esbuild(
name = "_syncpack.config.min",
entry_point = "syncpack.config.js",
# This file must always be CJS for syncpack to not ignore it
# If it is not CJS, syncpack will silently fail and default
# to it's own config, which will cascade into a failure on
# our end since it will fail to exit 1 on CI
format = "cjs",
minify = True,
# setting node as the platform will default us to CJS
platform = "node",
target = "esnext",
deps = [
"//arcanist/linters/linters/syncpack:node_modules",
],
)

bin.syncpack_lint_semver_ranges_binary(
name = "lint-semver-ranges",
args = [
"--config",
"$(execpath :_syncpack.config.min.js)",
],
# this sets the tool to run from the root of the monorepo source tree
chdir = "$$BUILD_WORKSPACE_DIRECTORY",
data = [
":_syncpack.config.min.js",
],
)
```

This manifested in the config silently failing due to missing dependencies which I fixed by passing `node_modules` to the `data` array in the js_binary.

Note, the js_binary target is executed via `bazel run`

### Version

Development (host) and target OS/architectures:

Output of `bazel --version`: 6.1.0

Version of the Aspect rules, or other relevant rules from your
`WORKSPACE` or `MODULE.bazel` file:

Language(s) and/or frameworks involved:

### How to reproduce

```shell
Bazel run a target that takes a config built with esbuild as input and pass it to the runner. In this case, it's syncpack. Feel free to also reach out to me for more info.
```

### Any other information?

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.