-
Notifications
You must be signed in to change notification settings - Fork 2k
feat(turborepo): pass through arguments only for root tasks #8089
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(turborepo): pass through arguments only for root tasks #8089
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎ 7 Ignored Deployments
|
@HelloWorld017 is attempting to deploy a commit to the Vercel Team on Vercel. A member of the Team first needs to authorize it. |
11e8bb9
to
05409ce
Compare
This would be great! |
Hey, sorry about this but that behavior must have been misdocumented. The behavior you're seeing is the one we intend to have and the docs reflect that today. It's possible that I could bring up this behavior with the team and see if it could be a configuration or flag. Does that interest the both of you? (Sidebar: @marisuxma, Jared doesn't work on this project anymore.) 😄 |
Actually the document does not describe the exact behaviour. Here's the summarized current behaviour.
Currently the Actual task running is different with cache key, which can create falsy cache, so I think they should be fixed. ConclusionSo, if the
If you want, I can open another PR, to do that. Footnotes
|
@anthonyshew (as a gentle reminder) would you check the comment I wrote? |
@HelloWorld017 |
Closing in favor of #10167. This behavior change would require a major version bump. |
### Description Updating documentation around pass through args to address #8089. This has been our behavior since 1.0 and I believe changing it would require a major semver bump. We pass any pass through args to tasks that match the name of one of the tasks provided to the `turbo run` command. I believe this makes sense as your `test` tool probably accepts different arguments than your `build` tool so if `turbo test -- --coverage=true` passed `--coverage=true` to not just `jest`, but also `esbuild` which might error when given that argument. If you did want it to be passed to build you can achieve this by running `turbo build test -- --global-flag`. ### Testing Instructions Added a unit test for this behavior. Also spot checked that this has been the behavior since 1.2.0 (earliest version I can get working without too much work). Tested by running `pnpm turbo run test --filter=@repo/ui -- passthru` 1.2.0 ``` • Packages in scope: @repo/ui • Running test in 1 packages @repo/ui:build: cache hit, replaying output 9509f6022cfb8b76 @repo/ui:build: @repo/ui:build: > @repo/ui@0.0.0 build /private/tmp/pass-thru/packages/ui @repo/ui:build: > echo building: @repo/ui:build: @repo/ui:build: building: @repo/ui:test: cache hit, replaying output 9b006b1111a435ab @repo/ui:test: @repo/ui:test: > @repo/ui@0.0.0 test /private/tmp/pass-thru/packages/ui @repo/ui:test: > echo testing: "passthru" @repo/ui:test: @repo/ui:test: testing: passthru Tasks: 2 successful, 2 total Cached: 2 cached, 2 total Time: 40ms >>> FULL TURBO ``` 1.6.0 ``` • Packages in scope: @repo/ui • Running test in 1 packages • Remote caching disabled @repo/ui:build: cache hit, replaying output 462fe8a87d3ab7c0 @repo/ui:build: @repo/ui:build: > @repo/ui@0.0.0 build /private/tmp/pass-thru/packages/ui @repo/ui:build: > echo building: @repo/ui:build: @repo/ui:build: building: @repo/ui:test: cache hit, replaying output 6fb610019c2f32a2 @repo/ui:test: @repo/ui:test: > @repo/ui@0.0.0 test /private/tmp/pass-thru/packages/ui @repo/ui:test: > echo testing: "passthru" @repo/ui:test: @repo/ui:test: testing: passthru Tasks: 2 successful, 2 total Cached: 2 cached, 2 total Time: 40ms >>> FULL TURBO ``` 2.4.4 ``` • Packages in scope: @repo/ui • Running test in 1 packages • Remote caching disabled @repo/ui:build: cache hit, replaying logs 074103acac2242fe @repo/ui:build: @repo/ui:build: � @repo/ui:build: > @repo/ui@0.0.0 build /private/tmp/pass-thru/packages/ui @repo/ui:build: > echo building: @repo/ui:build: @repo/ui:build: building: @repo/ui:test: cache hit, replaying logs 0299610cfc01eeff @repo/ui:test: @repo/ui:test: � @repo/ui:test: > @repo/ui@0.0.0 test /private/tmp/pass-thru/packages/ui @repo/ui:test: > echo testing: "passthru" @repo/ui:test: @repo/ui:test: testing: passthru Tasks: 2 successful, 2 total Cached: 2 cached, 2 total Time: 42ms >>> FULL TURBO ```
Description
In the document, it says that cli arguments are not passed through task dependencies.
But when I actually run a task with additional arguments (e.g.
turbo run dev -- --env=stage
) the arguments (e.g.--env=stage
) are passed through all the dependencies, and their caches are missed.Related Issues: #1744 #5743
Fixes
Only pass the additional cli arguments to the root tasks. (= tasks which are not required by other tasks)
Testing Instructions
design-system
example.turbo run build --summarize -- --disable-telemetry
.--disable-telemetry
is only passed in@repo/docs#build
, not@acme/ui#build
turbo run build --summarize -- --test
@acme/ui#build
is cached.