aspect-build / aspect-build/rules_esbuild
[Bug]: rules_esbuild does not properly pass `deps` to js_binary
- 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
Assessment
This issue has not been assessed yet.