• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pantsbuild / pants
93%

Build:
DEFAULT BRANCH: main
Repo Added 31 Aug 2014 03:34PM UTC
Files 1754
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH main
branch: SELECT
CHANGE BRANCH
x
  • No branch selected
  • 2.0.x
  • 2.1.x
  • 2.2.x
  • 2.3.x
  • 2.30.x
  • 2.31.x
  • 2.32.x
  • 21839-arbitrary-docker-build-flags
  • 22668-pytest-exit-code-5
  • Pex/de-strange
  • abolish_multiget
  • add-buildctl-engine
  • add-generic-option-to-docker-image
  • add-pex-style-complete-platforms
  • add/port-frozen-dict
  • add/port-frozen-ordered-set
  • add/port-scalar-and-async-mixin-fields
  • add/port-target-adaptor-and-source-block
  • add/remove-python-trampoline-overhead
  • add/source-field-in-rust
  • add_default_module_mappings
  • add_transitive_jar_deps
  • adhoc-non-runnable-target
  • allow_prereleases_from_uv_venv
  • another_small_get_cleanup
  • areitz/add_publish_plugins
  • areitz/fix_publish_dup_options2
  • arm64_on_depot
  • audit
  • automation/release/2.30.0
  • automation/release/2.30.0.dev2
  • automation/release/2.30.0.dev3
  • automation/release/2.30.0a0
  • automation/release/2.30.0rc0
  • automation/release/2.30.0rc1
  • automation/release/2.30.1
  • automation/release/2.30.1rc0
  • automation/release/2.30.2
  • automation/release/2.30.2rc0
  • automation/release/2.30.3rc0
  • automation/release/2.31.0
  • automation/release/2.31.0.dev0
  • automation/release/2.31.0.dev1
  • automation/release/2.31.0.dev2
  • automation/release/2.31.0.dev3
  • automation/release/2.31.0.dev4
  • automation/release/2.31.0.dev5
  • automation/release/2.31.0.dev6
  • automation/release/2.31.0.dev7
  • automation/release/2.31.0.dev8
  • automation/release/2.31.0a0
  • automation/release/2.31.0rc0
  • automation/release/2.31.1rc0
  • automation/release/2.31.1rc1
  • automation/release/2.32.0.dev0
  • automation/release/2.32.0.dev1
  • automation/release/2.32.0.dev2
  • automation/release/2.32.0.dev3
  • automation/release/2.32.0.dev4
  • automation/release/2.32.0.dev5
  • automation/release/2.32.0.dev6
  • automation/release/2.32.0.dev7
  • automation/release/2.32.0a0
  • automation/release/2.32.0a1
  • automation/release/2.32.0rc0
  • automation/release/2.32.0rc1
  • automation/release/2.33.0.dev0
  • automation/release/2.33.0.dev1
  • automation/release/2.33.0.dev2
  • awslambda-python3.14
  • bootstrap-protoc
  • buf-version-bump
  • cache_scope_for_test_shell_command
  • cbs/alt-pex-test
  • cbs/mypy-exit-code
  • cbs/scope-find-links
  • cbs/todo-followup
  • change-jdk-non-deterministic
  • cherry-pick-22749-to-2.30.x
  • cherry-pick-22875-to-2.30.x
  • cherry-pick-22994-to-2.30.x
  • cherry-pick-23007-to-2.30.x
  • cherry-pick-23036-to-2.30.x
  • cherry-pick-23155-to-2.30.x
  • cherry-pick-23155-to-2.31.x
  • cherry-pick-23246-to-2.31.x
  • cherry-pick-23248-to-2.32.x
  • cherry-pick-23302-to-2.32.x
  • cherry-pick-23306-to-2.32.x
  • cherry-pick-23309-to-2.32.x
  • cherry-pick-23311-to-2.32.x
  • cherry-pick-23315-to-2.30.x
  • cherry-pick-23315-to-2.31.x
  • cherry-pick-23315-to-2.32.x
  • cherry-pick-23322-to-2.32.x
  • cherry-pick-23327-to-2.32.x
  • cherry-pick-23337-to-2.32.x
  • cherry-pick-23341-to-2.31.x
  • cherry-pick-23355-to-2.32.x
  • cherry-pick-23363-to-2.32.x
  • chiara/add-source-index-options
  • ci-changed-since
  • ci-dev-release
  • ci/update-golang-version
  • codegen/protobuf/upgrade_to_v30.2
  • cognifloyd/nfpm-contents_util
  • cognifloyd/nfpm-inject_fields_chain
  • cognifloyd/nfpm-native_libs
  • cognifloyd/nfpm-native_libs-cleanup
  • cognifloyd/nfpm-native_libs-deb
  • cognifloyd/nfpm-native_libs-deb-scripts
  • cognifloyd/nfpm-native_libs-elfdeps
  • cognifloyd/nfpm-native_libs-elfdeps-test
  • cognifloyd/nfpm-native_libs-rpm
  • contextual_config
  • create-rc-workflow
  • cs_working_dir
  • csb/PEX_MODULE-no-more
  • csb/c-23023
  • csb/check-force
  • csb/codespell
  • csb/cov-obs-omit
  • csb/coveralls
  • csb/crates-sparse
  • csb/csb-2771-example
  • csb/did-you-mean
  • csb/enable-lto
  • csb/ext-hobgoblin
  • csb/ext-hobgoblin-oneshot-submit
  • csb/ext-trailing-comma
  • csb/ext-ver-upgrade-helm
  • csb/external-tool-ver-bounds
  • csb/fix-over-bug
  • csb/flake-10839
  • csb/flake-12499
  • csb/flake-7622
  • csb/flake-8193
  • csb/flaky-bitrot
  • csb/go-6
  • csb/grpc-alt
  • csb/image-size-backport
  • csb/indicatif-thread
  • csb/less-chatty
  • csb/macos-thank-you-for-service
  • csb/more-atomic-power
  • csb/more-lock-tests
  • csb/more-scie-opts
  • csb/mypy-1.19.1
  • csb/mypy-cache-disable
  • csb/mypy-ff
  • csb/mypy-pex-sys
  • csb/new-lockfile-ignore
  • csb/old-workflows
  • csb/pairwise
  • csb/pants-scie-experimental
  • csb/pbs-up
  • csb/pbs-up-20251031
  • csb/pbs-up-jan30
  • csb/pex-2.61.1
  • csb/pex-2.69.1
  • csb/pex-2.79.0
  • csb/pex-2.90.2
  • csb/pex-2.92.0
  • csb/pex-2.92.2
  • csb/pex-2.93.0
  • csb/pex-2.93.2
  • csb/pex-compress
  • csb/pex-scie-args-fix
  • csb/pex-scie-followup
  • csb/pex-up-2771
  • csb/pex-v2.91.2
  • csb/pex2.81.0
  • csb/pin-action-gen
  • csb/snowboard-pants
  • csb/spinner-decimal
  • csb/test-cache-dry
  • csb/test-mac-arm64
  • csb/ugh-again
  • csb/uploaded-prior-to
  • csb/upstream-rust-cache
  • csb/wish-for-a-q
  • csb/workflow-digest-shot-in-the-dark
  • csb/workstream-thread-name
  • csb/worktree-hash
  • custom_tailor_globs
  • cyclic-dep
  • debug_reapi_test_cache_misses
  • delete-tools
  • depbot-cooldown
  • dependabot-3rd-party
  • dependabot/cargo/src/rust/cargo_metadata-0.23.0
  • dependabot/cargo/src/rust/clap-4.5.48
  • dependabot/cargo/src/rust/clap-4.5.49
  • dependabot/cargo/src/rust/fs-set-times-0.20.3
  • dependabot/cargo/src/rust/ignore-0.4.24
  • dependabot/cargo/src/rust/libc-0.2.176
  • dependabot/cargo/src/rust/libc-0.2.177
  • dependabot/cargo/src/rust/parking_lot-0.12.5
  • dependabot/cargo/src/rust/serde-1.0.228
  • dependabot/cargo/src/rust/tempfile-3.23.0
  • dependabot/cargo/src/rust/tokio-1.48.0
  • dependabot/cargo/src/rust/tokio-retry2-0.6.0
  • dependabot/cargo/src/rust/tokio-rustls-0.26.4
  • dependabot/github_actions/gha-deps-0ce1c857ea
  • dependabot/github_actions/gha-deps-37ed2d73e8
  • dependabot/github_actions/gha-deps-3c8f6f13e3
  • dependabot/github_actions/gha-deps-3f3b910040
  • dependabot/github_actions/gha-deps-4c7d03f22a
  • dependabot/github_actions/gha-deps-5b6605ed9e
  • dependabot/github_actions/gha-deps-7ba3178b21
  • dependabot/github_actions/gha-deps-9ce9f8c094
  • dependabot/github_actions/gha-deps-a64d51e2df
  • dependabot/github_actions/gha-deps-ceab7413ee
  • dependabot/github_actions/gha-deps-ecc2d932a5
  • dependabot/npm_and_yarn/src/python/pants/backend/javascript/goals/jest_resources/js-version-updates-4f8a439944
  • dependency_pragma
  • deps_of_deleted_files
  • disable-macos-cache
  • docker-pushes-on-package
  • dogfood-caching
  • dturner/allow-exclude-in-globs
  • dturner/fix-bad-random
  • dturner/fixit-resource-mapping-fmt
  • enable-macos-cache
  • enable-publish-without-package
  • enable-publish-without-package-2
  • experimental_package_shell_command
  • export-integration-test-flakiness
  • expose-pytest-batch-targets
  • faster-debug-rust
  • feat/add-experimental-uv-pex-builder
  • feat/pytest-deps-from-target-resolve
  • feature/remote-cache-logger
  • feature/uv-lockfile-resolver
  • filedeps_v2engine
  • fix-21506
  • fix-22575
  • fix-jvm-check-bug
  • fix-noninteractive-publish-log-logic
  • fix-subsystem-mypy-plugin
  • fix-typescript-tests
  • fix/follow-dependencies-through-generic-target
  • fix/js-run-append-only-caches
  • fix/js-workspace-member-node-modules
  • fix/prettier-output-files
  • fix/terminal-width-fallback
  • fix/uv-pex-lock-export
  • fix/uv-vcs-url-requirement
  • fix_adhoc_tool_test
  • fix_ci_warnings
  • fix_dynamic_ui
  • fix_grpc_util_tests
  • fix_local_store_tests
  • fix_pex_test
  • fix_pex_venv_test
  • fix_pyright_inputs
  • fix_sandboxing_retry
  • fix_scie_tests
  • fix_type_in_help
  • fromfile_sections
  • fromfile_toml
  • gfast/22964/save-pip-log-in-sandbox
  • gfast/23005/add-default-module-mapping-airflow-client
  • gfast/fix-broken-link
  • gha-alpha-update
  • gha-dep-updates
  • gha-deps
  • gha-updates
  • git-root
  • git_change_types
  • go-compile-trimpath
  • go-dedup-module-analysis
  • go-deps-perf
  • golang/fix-sdk-version-check
  • improve_uv
  • infer_deps
  • init_goal
  • investigate_runner_diskspace
  • issue-18388-ignored-string-imports
  • jack.jennings/node-modules-walker
  • java-inner-class-inference
  • js-dep-updates-20251024
  • js-package-managers
  • jwb/fix-scheduling-workunit-log-level
  • jwb/log-workunit-duration
  • kick-deprecation-cycle
  • kill_wrapped_generate_lockfile
  • kpurdon/golangci-lint-v2-multi-mod
  • lahosken/docsitegen_begin
  • lockfile_format
  • lockfiles
  • main
  • make_sandboxer_test_more_robust
  • master
  • misc-fix-zip-exception
  • moar_windows_ci
  • more-ruff-check
  • more-rust-dep-updates
  • more_get_cleanups
  • mypy-pbs-dep-updates-20251024
  • ndellosa95/default-interpreter-constraints
  • new-scala-given-syntax
  • ng_external_binary
  • ng_goal_and_system
  • ng_source_partition
  • ng_subsystem
  • nodejs-tool-bundled-lockfiles
  • nudge-bot
  • nudgebot-cache-permission
  • optimize-changed-filter-pr
  • options
  • pants_ng_cli
  • pants_ng_options
  • pants_ng_plumbing
  • pantsd_env
  • pbs-update
  • pbs/update-thru-20251217
  • perf-pants
  • persistent-dep-cache
  • pex-2.76.1
  • pex-2.91.4
  • pex-266
  • pex_sync
  • plugins/use-uv-for-resolution
  • pr-automation
  • preserve-http-proxy-env-vars
  • protobuf/partition-by-resolve-field
  • publish-skips-preemptive
  • purge_uneeded_packages
  • pyo3/upgrade-0.27.1
  • pyo3/upgrade-v0.27.0
  • pyo3/upgrade-v0.27.2
  • pyo3/upgrade-v0.28.3
  • python-dep-updates-20251026
  • python314
  • python_multiple_dep_inference
  • reapi_cache_logging
  • refactor_dep_inference
  • refactor_python_inference
  • regen_lockfiles
  • reignore_flaky_test
  • release_0.0.26
  • release_0.0.28
  • release_0.0.29
  • release_0.0.30
  • release_0.0.31
  • release_0.0.32
  • release_0.0.33
  • release_0.0.34
  • release_0.0.35
  • release_0.0.36
  • release_0.0.37
  • release_0.0.38
  • release_0.0.40
  • release_0.0.41
  • release_0.0.42
  • release_0.0.43
  • release_0.0.44
  • release_0.0.45
  • release_0.0.46
  • release_0.0.47
  • release_0.0.48
  • release_1.7.0rc0
  • release_2.0.0
  • release_2.0.0.dev4
  • release_2.0.0.dev5
  • release_2.0.0.dev6
  • release_2.0.0.dev7
  • release_2.0.0.dev8
  • release_2.0.0.dev9
  • release_2.0.0a0
  • release_2.0.0a1
  • release_2.0.0a2
  • release_2.0.0a3
  • release_2.0.0b1
  • release_2.0.0b2
  • release_2.0.0b3
  • release_2.0.0rc0
  • release_2.0.0rc1
  • release_2.0.0rc2
  • release_2.0.0rc3
  • release_2.0.1
  • release_2.0.1rc0
  • release_2.0.1rc1
  • release_2.0.1rc2
  • release_2.0.1rc3
  • release_2.0.1rc4
  • release_2.0.2
  • release_2.0.2rc0
  • release_2.1.0
  • release_2.1.0.dev0
  • release_2.1.0rc0
  • release_2.1.0rc1
  • release_2.1.0rc2
  • release_2.1.0rc3
  • release_2.1.1
  • release_2.1.1rc0
  • release_2.1.1rc1
  • release_2.1.1rc2
  • release_2.1.2
  • release_2.1.2rc0
  • release_2.2.0
  • release_2.2.0.dev1
  • release_2.2.0rc0
  • release_2.2.0rc1
  • release_2.2.0rc2
  • release_2.2.1
  • release_2.2.1rc0
  • release_2.2.1rc1
  • release_2.2.1rc2
  • release_2.2.2
  • release_2.2.2rc0
  • release_2.2.2rc1
  • release_2.2.3
  • release_2.2.3rc0
  • release_2.2.4
  • release_2.2.4rc0
  • release_2.3.0
  • release_2.3.0.dev0
  • release_2.3.0.dev1
  • release_2.3.0.dev2
  • release_2.3.0.dev3
  • release_2.3.0rc0
  • release_2.3.0rc1
  • release_2.3.0rc2
  • release_2.3.0rc3
  • release_2.3.0rc4
  • release_2.3.1
  • release_2.3.1rc0
  • release_2.3.1rc2
  • release_2.3.1rc3
  • release_2.3.2
  • release_2.3.2rc0
  • release_2.3.3
  • release_2.3.3rc0
  • release_2.4.0.dev0
  • release_2.4.0.dev1
  • relock-python-subsystems
  • remove-cst
  • remove-legacy-dockerfile-parser
  • remove-unused-rust-deps
  • remove_get
  • remove_madvise_dep
  • remove_pkg_resources_finally
  • remove_superfluous_ic_field
  • revert_23293
  • ruff-isort
  • ruff-known-versions
  • ruff-pyupgrade
  • run_ci_without_gets
  • runson_ami_pat
  • runson_python_3.14
  • rust-1.93
  • rust-dep-updates-20251028
  • rust-deps
  • rust/upgrade-0.93.1
  • rust/upgrade-v1.90.0
  • rust/upgrade-v1.92.0
  • rust/upgrade-v1.94.0
  • rust/upgrade-v1.94.1
  • rust/upgrade-v1.95.0
  • rust_fs_abstraction
  • rust_ng_changes
  • rustup-minimal
  • scala-version
  • shell-completion-fs
  • shell/runnable-shell-command
  • show
  • simplify_ExecutionRequest
  • single_subject
  • skip-preemptive-docker
  • skip-preemptive-helm
  • skip-preemptive-python
  • source_partition_tweak
  • source_partitions
  • source_root_index
  • stdin
  • strip_tool_archive_prefix
  • stuhood/1396-and-1395
  • stuhood/1396-and-1395-with-redundant-resources-fix
  • stuhood/1396-and-1400-integration
  • stuhood/avoid-reparsing-analysis
  • stuhood/deep-analysis-validation
  • stuhood/invalidate-bad-cached-analysis
  • stuhood/isolation-integration-three
  • stuhood/isolation-integration-two
  • stuhood/jvm-compile-isolated-strategy
  • stuhood/missing-product-debug
  • stuhood/no-classes-for-target
  • stuhood/pants-1.2.4-sans-process-edits
  • stuhood/perf-integration
  • stuhood/prep-2.2.0.dev2
  • stuhood/rewind
  • stuhood/skip-missing-depfile
  • stuhood/switch-classpath-to-union-product
  • stuhood/test-populate-products
  • stuhood/zinc-in-platform-version
  • sureshjoshi-patch-1
  • tarek/fix-sandboxer-fd-inheritance
  • tc-auth-plugin
  • tdesai/add_target_type_to_depmap
  • tdesai/feature_javasources
  • tdesai/fix_pants_script_in_non_dev_mode
  • tdesai/fix_perf_issue
  • tdesai/pants_plugin_integrationtest
  • tdesai/test_scalac_compiler_issues
  • tdesai/twitter-release-fix
  • tdyas/ci/bump-versions
  • tdyas/close-for-stdio-wrappers
  • tdyas/fix-dep-validator-issue
  • tdyas/fix-plugin-resolver-test
  • tdyas/observability/opentelemetry
  • tdyas/pex/upgrade-2.95.1
  • tdyas/reapi/update-protos
  • tdyas/reennable-honeycomb-otel
  • tdyas/remove_debug_config
  • tdyas/ruff-init_py-fixes
  • tdyas/update-trivy
  • test-remote-cache
  • test_pants_with_uv_lockfiles
  • test_setup_protoc_upgrade
  • treesitter-updates
  • tsc2
  • twitter/pants-1.2.3
  • twitter/pants-1.2.4
  • twitter/pants-1.2.6
  • upcoming-deprecations
  • update-breaking-rust-deps
  • update-coursier-version
  • update-subsystems-314
  • update_setup_protoc
  • upgrade_pex
  • upgrade_pex_again
  • upgrade_pex_to_2.69.2
  • upgrade_pex_to_2.73.1
  • upgrade_pex_to_2.92.1
  • upgrade_runson_to_ami-0057bf9b58247b3f0
  • upgrade_runson_to_ami-00612fe402ac76f68
  • upgrade_runson_to_ami-00e3295c7f5b37c72
  • upgrade_runson_to_ami-0405ab8faace0f675
  • upgrade_runson_to_ami-048f2f64479615b4f
  • upgrade_runson_to_ami-051b9047eb0580678
  • upgrade_runson_to_ami-0731dda463120bb7c
  • upgrade_runson_to_ami-0f944453e8543e5f0
  • upgrade_uv
  • use_depot_runners
  • use_macstadium_runner
  • use_sandboxer_by_default_in_our_repo
  • uv
  • uv-lockfile-resolver
  • uv/venvopt
  • uv_lockfile
  • vscode2026
  • win_stdio2
  • windows_ci
  • zundel/doc-fork-and-ci
  • zundel/fixup-changelog
  • zundel/javadoc-fixes
  • zundel/update-junit-runner-0.0.8
  • zundel/zinc-error-output-repro

26 May 2026 03:47AM UTC coverage: 92.791% (+0.004%) from 92.787%
26431083026

push

github

web-flow
fix(js): include workspace member node_modules in install sandbox (#23342)

# Problem

In a nodejs workspace, each project of the workspace can have its own
`node_modules` directory that is populated during installation.
Previously, pants was capturing the project's workspace and the
top-level workspace but not sibling or descendent projects. This caused
certain operations to fail, such as `tsc --build` on a pnpm workspace
project since a pnpm project doesn't hoist member deps to the root by
default. Outside of pnpm, there are reports of this causing problems
with yarn/npm projects where a version conflict prevents hoisting.

# Solution

In `node_modules_directories`, the install sandbox now captures every
workspace member's `node_modules/`, not just the build target's.

Note: the new behavior only impacts the install path ( when
`self.package` is set). Lockfile generation's codepath
(via`NodeJsProjectEnvironment.from_root()`) doesn't set `self.package`
and keeps the "root only" behavior. Dropping the `if self.package` check
would align with the approach from #23264, but I left out that change to
minimize the scope. I added a test to demonstrate this behavior.

# AI Disclosure

Claude Code was used to diagnose the problem, write the fix with my
input, and write the regression tests

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

63 of 63 new or added lines in 3 files covered. (100.0%)

93062 of 100292 relevant lines covered (92.79%)

4.02 hits per line

Relevant lines Covered
Build:
Build:
100292 RELEVANT LINES 93062 COVERED LINES
4.02 HITS PER LINE
Source Files on main
  • Tree
  • List 1754
  • Changed 6
  • Source Changed 2
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
26431083026 main fix(js): include workspace member node_modules in install sandbox (#23342) # Problem In a nodejs workspace, each project of the workspace can have its own `node_modules` directory that is populated during installation. Previously, pants was capt... push 26 May 2026 03:54AM UTC web-flow github
92.79
26402722782 fix/terminal-width-fallback Merge 1cbe48321 into 58bd69c82 Pull #23364 25 May 2026 11:27PM UTC web-flow github
92.78
26380816428 cherry-pick-23363-to-2.32.x Merge 7410b48e1 into 7b1060c81 Pull #23368 25 May 2026 03:03AM UTC web-flow github
52.31
26377393536 main Prepare 2.33.0.dev2 (#23367) push 25 May 2026 12:46AM UTC web-flow github
92.79
26372809345 automation/release/2.33.0.dev2 Merge c1e333b4a into b2edb6073 Pull #23367 24 May 2026 09:21PM UTC web-flow github
92.79
26342152999 main Run Linux ARM CI on Depot runners (#23363) RunsOn is deprecating their v2 stack, and rather than migrate to v3 we should use the resources kindly donated by Depot. GitHub also now has Linux ARM runners, should we need them. push 23 May 2026 08:04PM UTC web-flow github
91.16
26338762827 main Fix NG subsystem mypy plugin (#23334) The previous implementation failed if the subsystem extended an intermediate SubsystemNg subclass instead of SubsystemNg directly. This change switches to get_base_class_hook, so that setting abstract_stat... push 23 May 2026 05:20PM UTC web-flow github
92.79
26320843924 tdyas/fix-dep-validator-issue Merge bbe74a2c6 into 7ea655ba0 Pull #23121 23 May 2026 02:27AM UTC web-flow github
92.79
26317467705 arm64_on_depot Merge 6fbd9bd53 into 7ea655ba0 Pull #23363 23 May 2026 12:02AM UTC web-flow github
92.79
26260896988 uv/venvopt Merge 0780a2281 into 7ea655ba0 Pull #23365 22 May 2026 12:32AM UTC web-flow github
92.79
See All Builds (12669)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc