Skip to content
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(codemod): change migrate behavior for majors #8188

Conversation

tknickman
Copy link
Member

Do not merge yet - we need to make sure that codemods that are not idempotent are handled correctly. I think the only one that isn't is the default outputs code mod, so we need to identify if we need to run it.

chris-olszewski and others added 17 commits May 20, 2024 09:54
Remove legacy filter flags now that they've been deprecated for quite
awhile.

Existing test suite passes. Updated tests that are still applicable and
removed those that aren't.
### Description

I messed up a resolving a merge conflict and didn't migrate some args
that moved from `ExecutionArgs` to `RunArgs` in #7613

### Testing Instructions

Tests on CI pass

Closes TURBO-2872
### Description

With 2.0 we will now be requiring a `packageManager` field in
`package.json` as this is a best practice and it helps us behave in a
deterministic manner.

The actual code change is very straightforward as we remove our package
manager inference code and return an error if reading package manager
from `package.json` fails.

Most of the PR is updating tests.

### Testing Instructions

Updated unit tests
### Description

Previously we would infer scope for name filters if there was exactly
one matching package.
e.g. `turbo build --filter=ui` would run `@a/ui#build` if there was a
`@a/ui` package in the workspace

This is confusing and can result in accidentally breaking filters when a
conflicting package is added e.g. adding `@b/ui` would cause *no* tasks
to be run along with a zero exit code.

### Testing Instructions

Updated unit test to verify inference no longer works and using the
explicit package name still works.
### Description

We replaced this with an option instead of an arg, but cleaning up here!

### Testing Instructions

<!--
  Give a quick description of steps to test your changes.
-->
### Description

We now will error if we encounter a package with a missing or empty
package name.

This is done in the graph validation step as opposed to construction
since we don't want to impose this restriction on `@turbo/repository`
users.

### Testing Instructions

Added integration test
### Description

This PR changes `--filter` so it now will error on certain malformed
filters:
- Name filters with no globs that don't match any packages e.g.
`--filter=fo` instead of `--filter=foo`
- Directory filters that reference a directory that doesn't exist: e.g.
`--filter='./pakcages/*'`

Each commit of the PR can be reviewed on it's own.

### Testing Instructions

Updated existing unit tests. Added additional ones along with an
integration test.
### Description

Moves the file system cache to `.turbo` as discussed in #842.

### Testing Instructions

Find your favorite Turborepo of choice and run a `turbo` command twice.
You should miss cache on the first run and hit cache on the second.

CLOSES TURBO-3130

---------

Co-authored-by: Chris Olszewski <[email protected]>
…on` (#8149)

### Description

Changed `outputMode` to `outputLogs` in `turbo.json` to match the flag
name. Also wrote a code mod to migrate `turbo.json` config
automatically.

### Testing Instructions

Existing tests are migrated. Also wrote tests for code mod
### Description

Change `--only` so it behaves in a more sensible way. It still shouldn't
be widely used, but now it at least does what it says it does.

Previously `--only` would still follow package dependencies resulting
additional tasks getting run that weren't expected.
e.g. for task definition `"test": {"dependsOn": ["build", "^test"]}` and
package `a` depending on `b`, then `turbo test --filter=a --only` would
result in both `a#test` and `b#test` being run. With this PR now only
`a#test` will be run.

I changed the `--only` logic so now it will limit tasks in the graph to
exactly those that are in the product of the packages implied by
`--filter` and the tasks specified in the run args. This should make
`--only` a far more sensible flag.


### Testing Instructions

Added unit tests for testing the trimming of package dependencies and
task id style dependencies e.g. `"dependsOn": ["a#test"]`
### Description

Renaming the `pipeline` key to `tasks` in turbo.json.

We went this key to better express what Turborepo does with the
configuration that is provided in this key. We've seen with users that
the term "pipeline" can be confusing for how `turbo` _really_ executes
the task graph.

In reality, the keys in the `pipeline` object are really the list of
_tasks_ registered to `turbo` - so let's call it that.

### Non-goals

This PR does not include update:
-  The examples in the repo
- JS packages
- `eslint-plugin-turbo`

These updates will be needed in subsequent PRs.

### Testing Instructions

Hopefully CI will do its job here - but, of course, would appreciate a
review of my changes to make sure I'm not missing anything my untrained
eye may be missing.

CLOSES TURBO-3225
### Description

If a user provides a glob that points to a directory e.g. `dist` or
`dist/` then we will add a trailing double star so that the directory
contents get captured instead of just the directory entry itself.

### Testing Instructions

Added unit tests for adding doublestar
Added integration test for verifying that `src/` and `dist` for task
inputs/outputs get treated as `src/**` and `dist/**` respectively.
### Description

#8180 and #8157 ended up landing in a way where `globs.t` will fail due
to using a test fixture that uses the now removed `pipeline` field.

### Testing Instructions

CI
### Description

This PR removes `globalDotEnv`/`dotEnv` in favor of `globalDependencies`
and `inputs` which is now fairly ergonomic to use with the addition of
`$TURBO_DEFAULTS$`.

This PR does *not* update the corresponding JS types.

### Testing Instructions

Updated existing integration tests
Copy link
Contributor

🟢 Turbopack Benchmark CI successful 🟢

Thanks

Copy link
Contributor

github-actions bot commented May 21, 2024

🟢 CI successful 🟢

Thanks

@anthonyshew
Copy link
Contributor

We used you as inspiration, Turbotom. Thanks as always.

@tknickman tknickman deleted the tomknickman/turbo-3233-create-major-codemod-for-1-2 branch July 19, 2024 13:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants