aspect-build / aspect-build/rules_ts
[Bug]: encounting error TS5058: The specified path does not exist: '**/tsconfig.json'. when working with ts_project
- Dominant language
- Starlark
- Stars
- 138
- Forks
- 87
- Avg merge
- 2d 8h
- Merged PRs (30d)
- 3
Description
### What happened?
I noticed in a monorepo that `tsconfig.json` isn't getting detected by bazel, even though it successfully shows up in `bazel-bin`. The error details are:
```
sam@RANDOMNAME/ rbac % bazel build :tsc --verbose_failures --sandbox_debug
Starting local Bazel server and connecting to it...
INFO: Analyzed target //rbac:tsc (51 packages loaded, 4715 targets configured).
INFO: Found 1 target...
ERROR: /Users/sam/7is/repo/rbac/BUILD:6:11: Transpiling & type-checking TypeScript project @//rbac:tsc [tsc -p rbac/tsconfig.json] failed: (Exit 1): sandbox-exec failed: error executing command
(cd /private/var/tmp/_bazel_sam/1213a65374144926830e6c56ce40f316/sandbox/darwin-sandbox/5/execroot/small-repo && \
exec env - \
BAZEL_BINDIR=. \
PATH=/Users/samuelchan/Library/Caches/bazelisk/downloads/sha256/c6b6dc17efcdf13fba484c6fe0b6c3361b888ae7b9573bc25a2dbe8c502448eb/bin:/opt/homebrew/bin:/opt/homebrew/bin:/Users/sam/.rbenv/shims:/Users/sam/.rbenv/bin:/Users/sam/.nvm/versions/node/v20.17.0/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/opt/homebrew/bin:/Users/sam/Library/pnpm:/Users/samuelchan/.rbenv/bin:/Users/sam/.nvm/versions/node/v20.17.0/bin:/Users/sam/.vscode/extensions/ms-python.debugpy-2025.6.0-darwin-arm64/bundled/scripts/noConfigScripts \
TMPDIR=/var/folders/jn/222bt8f14ns215y43dbg7z_00000gn/T/ \
/usr/bin/sandbox-exec -f /private/var/tmp/_bazel_sam/1213a65374144926830e6c56ce40f316/sandbox/darwin-sandbox/5/sandbox.sb /var/tmp/_bazel_sam/install/4cce4079417824dc23315418e12c159b/process-wrapper '--timeout=0' '--kill_delay=15' '--stats=/private/var/tmp/_bazel_sam/1213a65374144926830e6c56ce40f316/sandbox/darwin-sandbox/5/stats.out' bazel-out/darwin_arm64-opt-exec-2B5CBBC6/bin/external/npm_typescript/tsc_/tsc --outDir rbac/lib --declarationDir rbac/lib --project rbac/tsconfig.json --rootDir rbac)
error TS5058: The specified path does not exist: 'rbac/tsconfig.json'.
Target //rbac:tsc failed to build
INFO: Elapsed time: 8.703s, Critical Path: 1.95s
INFO: 11 processes: 7 internal, 4 local.
FAILED: Build did NOT complete successfully
```
and my defined target, within `/rbac/BUILD`
```
load("@aspect_rules_ts//ts:defs.bzl", "ts_project")
ts_project(
name = "tsc",
srcs = glob([
"src/**",
"tsconfig.json",
]),
declaration = True,
validate = False,
transpiler = 'tsc',
tsconfig = "tsconfig.json",
out_dir = "lib",
)
```
upon closer inspection, i see that the temporary directory `/private/var/tmp/_bazel_sam/1213a65374144926830e6c56ce40f316/sandbox/darwin-sandbox/5/execroot/small-repo` does not contain `rbac/tsconfig`, and only contains `bazel-out`. However, when checking with an example genrule to debug, i see that with genrule it exists
```
# genrule step
genrule(
name = "debug-tsc",
srcs = glob([
"src/**",
"tsconfig.json",
]),
outs = ["debug.txt"],
# This command runs inside the sandbox CWD (execroot/small-repo)
cmd = """
echo "--- Current Directory: $$(pwd) ---" > $@
echo "\n--- Listing CWD Contents ---" >> $@
ls -la >> $@
echo "\n--- Listing ./rbac/ ---" >> $@
ls -la ./rbac >> $@ || echo "*** ./rbac/ directory not found ***" >> $@
echo "\n--- Listing ./rbac/tsconfig.json ---" >> $@
ls -la ./rbac/tsconfig.json >> $@ || echo "*** ./rbac/tsconfig.json not found ***" >> $@
echo "\n--- Done ---" >> $@
""",
)
```
```
output to `bazel-bin`.
--- Current Directory: /private/var/tmp/_bazel_samuelchan/1213a65374144926830e6c56ce40f316/sandbox/darwin-sandbox/1/execroot/small-repo ---
--- Listing CWD Contents ---
total 0
drwxr-xr-x 5 sam wheel 160 May 6 11:40 .
drwxr-xr-x 3 sam wheel 96 May 6 11:40 ..
drwxr-xr-x 3 sam wheel 96 May 6 11:40 bazel-out
drwxr-xr-x 3 sam wheel 96 May 6 11:40 external
drwxr-xr-x 4 sam wheel 128 May 6 11:40 rbac
--- Listing ./rbac/ ---
total 0
drwxr-xr-x 4 sam wheel 128 May 6 11:40 .
drwxr-xr-x 5 sam wheel 160 May 6 11:40 ..
drwxr-xr-x 4 sam wheel 128 May 6 11:40 src
lrwxr-xr-x 1 sam wheel 106 May 6 11:40 tsconfig.json -> /private/var/tmp/_bazel_sam/1213a65374144926830e6c56ce40f316/execroot/small-repo/rbac/tsconfig.json
--- Listing ./rbac/tsconfig.json ---
lrwxr-xr-x 1 sam wheel 106 May 6 11:40 ./rbac/tsconfig.json -> /private/var/tmp/_bazel_sam/1213a65374144926830e6c56ce40f316/execroot/small-repo/rbac/tsconfig.json
--- Done ---
```
how can i solve this? why is it not appearing when i run `ts_project` with all ts files and tsconfig?
### Version
Development (host) and target OS/architectures:
Output of `bazel --version`: bazel 6.5.0
WORKSPACE:
```
workspace(
name = "small-repo",
)
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file", "http_jar")
# load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository", "new_git_repository")
http_archive(
name = "aspect_rules_ts",
sha256 = "fa5659a511f236b1ae6112258bff602fa20a40324b282734c841bc1e857797f3",
strip_prefix = "rules_ts-3.5.2",
url = "https://github.com/aspect-build/rules_ts/releases/download/v3.5.2/rules_ts-v3.5.2.tar.gz",
)
load("@aspect_rules_ts//ts:repositories.bzl", "rules_ts_dependencies")
rules_ts_dependencies(
ts_version_from = "//rbac:package.json",
)
load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies")
rules_js_dependencies()
load("@aspect_rules_js//js:toolchains.bzl", "rules_js_register_toolchains")
load("@aspect_rules_js//npm:repositories.bzl", "npm_translate_lock")
rules_js_register_toolchains()
npm_translate_lock(
name = "npm",
pnpm_lock = "//rbac:pnpm-lock.yaml",
)
load("@npm//:repositories.bzl", "npm_repositories")
npm_repositories()
```
Language(s) and/or frameworks involved:
typescript, pnpm, bazel
### How to reproduce
```shell
Clone
https://github.com/samuelisch/small-repo
initialize bazel on your own machine
bazel is set to 6.5.0 with `.bazelversion`
run `bazel build //rbac:tsc` for error example
run `bazel build //rbac:debug-tsc` to show that it should work fine otherwise, with genrule
```
### Any other information?
_No response_
Contributor guide
Research direction
Start with rbac/BUILD and the ts_project definition, then compare its sandbox inputs with the working debug-tsc genrule. Reproduce with `bazel build //rbac:tsc` and inspect how rbac/tsconfig.json is made available to the TypeScript invocation. Done means the reproduced build finds the config and completes successfully.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100