chore: migrate to yarn modern#35747
Conversation
479d2cd to
df4487b
Compare
📊 Bundle size reportUnchanged fixtures
|
7bdc1bc to
6b5f740
Compare
|
Pull request demo site: URL |
5e16b71 to
b40e143
Compare
| "packages/*", | ||
| "packages/react-components/*", | ||
| "packages/react-components/*/*", | ||
| "!packages/react-components/react-jsx-runtime/jsx-runtime", |
There was a problem hiding this comment.
Yarn classic was silently skipping directories without name in package.json files, Yarn modern is more stricter and we need to exclude these sub paths explicitly
1435cc5 to
1e47bea
Compare
f891481 to
4aff9a8
Compare
| "bin": { | ||
| "storybook-llms-extractor": "./bin/storybook-llms-extractor.js" | ||
| }, | ||
| "bin": "./bin/storybook-llms-extractor.js", |
There was a problem hiding this comment.
yarn automatically makes bin as shorthand and removes empty peerDependencies
There was a problem hiding this comment.
this is a public package actively used, do we need to make this change ? I'd suggest to revert
a827a55 to
7adf9fc
Compare
1d16cf3 to
38b5630
Compare
891eb69 to
9413197
Compare
9413197 to
fcfbda8
Compare
…yarn run -T The migration makes inferred targets exec via 'yarn run -T'; the react-compiler-analyzer target-group inline snapshots still expected the old 'yarn <bin>' form.
7f2a050 to
84b6b0d
Compare
1d0a7fe to
97be392
Compare
| index 84d6ced..4512f06 100644 | ||
| --- a/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-deprecated.js | ||
| +++ b/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-deprecated.js | ||
| diff --git a/dist/rules/no-deprecated.js b/dist/rules/no-deprecated.js |
There was a problem hiding this comment.
@mainframev didnt this already ship in the official package ? please check as a follow up so we can go clean
| "test": "jest --passWithNoTests" | ||
| }, | ||
| "dependencies": { | ||
| "@fluentui/react": "*", |
There was a problem hiding this comment.
was all this churn necessary ?
| await shEcho(`yarn --version`); | ||
| await shEcho(`yarn tsc --version`); | ||
| await shEcho(`yarn tsc --version`, tempPaths.testApp); | ||
| await shEcho(`yarn run -T tsc --version`); |
There was a problem hiding this comment.
why do we need run -T here ? this bootstraps its separate project with only 1 typescript versions
| @@ -1,5 +1,3 @@ | |||
| // @ts-check | |||
There was a problem hiding this comment.
revert pls if not justified change
| yarnPath: .yarn/releases/yarn-4.12.0.cjs | ||
|
|
||
| logFilters: | ||
| - code: YN0002 |
There was a problem hiding this comment.
What’s the rationale for globally discarding YN0002 here? Since that warning covers missing peer dependencies, suppressing it repo-wide could hide real dependency issues during the Yarn 4 migration.
| "bin": { | ||
| "storybook-llms-extractor": "./bin/storybook-llms-extractor.js" | ||
| }, | ||
| "bin": "./bin/storybook-llms-extractor.js", |
There was a problem hiding this comment.
this is a public package actively used, do we need to make this change ? I'd suggest to revert
| "bin": { | ||
| "visual-regression-assert": "./bin/visual-regression-assert.js" | ||
| }, | ||
| "bin": "./bin/visual-regression-assert.js", |
There was a problem hiding this comment.
is this needed for migration ?
| projectConfigGlob, | ||
| async (configFiles, options, context) => { | ||
| const globalConfig: Pick<TaskBuilderConfig, 'pmc'> = { pmc: getPackageManagerCommand('yarn') }; | ||
| const pmc = getPackageManagerCommand('yarn'); |
There was a problem hiding this comment.
nx getPackageManagerCommand doesn't provide what we need here ? if not this makes it coupled for yarn in our repo ( not a blocker ) but we need to double check, if this will be mitigated by nx bump or what's the guidance here
| const config = { | ||
| pmc: { | ||
| ...pmc, | ||
| exec: 'yarn run -TB', |
There was a problem hiding this comment.
lets be consistent and remove the B
| exec: 'yarn run -TB', | |
| exec: 'yarn run -T', |
| ); | ||
| " | ||
| `); | ||
| }); |
There was a problem hiding this comment.
is this needed as part of migration ?
|
additional things to change / verify
|


Migrated FluentUI monorepo from Yarn Classic (v3 bundled CLI) to Yarn Modern (Berry v4.12.0) using nodeLinker: node-modules for full compatibility. No PnP - traditional node_modules/ structure is preserved.
Previous Behavior
Yarn v1
New Behavior
Yarn v4
Yarn binary & configuration
Scripts: just-scripts build → yarn run -T just-scripts build
Resolutions
Syntax change: modern yarn doesn't preserve **/parent/child glob resolutions in practice (strips them during yarn install), so security overrides were flattened from master's scoped form.