build(eslint-config-fluid): move back to independent workspace#26427
build(eslint-config-fluid): move back to independent workspace#26427tylerbutler wants to merge 9 commits intomicrosoft:mainfrom
Conversation
There was a problem hiding this comment.
Pull request overview
Restores @fluidframework/eslint-config-fluid as an independently versioned workspace (v9.0.0) instead of being part of the client release group, and updates the repo to consume it via ~9.0.0 while using a local link: override for in-repo development/builds.
Changes:
- Removed
common/build/eslint-config-fluidfrom the root pnpm workspace and re-enabled its publish/pack behavior in CI. - Updated repo packages to depend on
@fluidframework/eslint-config-fluidvia~9.0.0instead ofworkspace:*. - Updated root dependency resolution to use
link:+ pnpm override and added a rootpostinstallto install transitive deps for the linked config.
Reviewed changes
Copilot reviewed 161 out of 162 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/pipelines/build-eslint-config-fluid.yml | Re-enables default packing behavior by removing the taskPack: false override. |
| tools/pipelines/build-client.yml | Removes temporary path exclusions now that eslint-config-fluid is no longer in the client release group. |
| syncpack.config.cjs | Re-enables syncpack version consistency checks for @fluidframework/eslint-config-fluid. |
| pnpm-workspace.yaml | Removes common/build/eslint-config-fluid from the root workspace packages list. |
| package.json | Adds a postinstall to install eslint-config-fluid’s deps; switches root dependency to local link and adds pnpm override. |
| fluidBuild.config.cjs | Removes temporary policy-check exclusion for eslint-config-fluid. |
| common/build/eslint-config-fluid/package.json | Marks eslint-config-fluid as publishable again and bumps version to 9.0.0. |
| packages/utils/tool-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/utils/telemetry-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/utils/odsp-doclib-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/tools/replay-tool/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/tools/fluid-runner/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/tools/fetch-tool/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/tools/devtools/devtools/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/tools/devtools/devtools-view/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/tools/devtools/devtools-test-app/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/tools/devtools/devtools-core/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/tools/devtools/devtools-browser-extension/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/tools/changelog-generator-wrapper/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/test-version-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/test-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/test-service-load/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/test-pairwise-generator/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/test-end-to-end-tests/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/test-drivers/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/test-driver-definitions/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/stochastic-test-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/snapshots/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/mocha-test-setup/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/local-server-tests/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/local-server-stress-tests/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/test/functional-tests/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/service-clients/tinylicious-client/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/service-clients/odsp-client/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/service-clients/end-to-end-tests/odsp-client/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/service-clients/end-to-end-tests/azure-client/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/service-clients/azure-client/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/runtime/test-runtime-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/runtime/runtime-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/runtime/runtime-definitions/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/runtime/id-compressor/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/runtime/datastore/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/runtime/datastore-definitions/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/runtime/container-runtime/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/runtime/container-runtime-definitions/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/loader/test-loader-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/loader/driver-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/loader/container-loader/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/undo-redo/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/tree-agent/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/tree-agent-ses/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/tree-agent-langchain/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/synthesize/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/request-handler/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/react/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/presence/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/oldest-client-observer/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/fluid-static/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/fluid-framework/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/dds-interceptions/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/data-object-base/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/attributor/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/aqueduct/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/framework/agent-scheduler/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/tinylicious-driver/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/routerlicious-urlResolver/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/routerlicious-driver/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/replay-driver/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/odsp-urlResolver/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/odsp-driver/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/odsp-driver-definitions/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/local-driver/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/file-driver/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/driver-web-cache/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/driver-base/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/drivers/debugger/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/tree/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/test-dds-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/task-manager/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/shared-summary-block/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/shared-object-base/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/sequence/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/register-collection/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/pact-map/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/ordered-collection/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/merge-tree/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/matrix/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/map/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/legacy-dds/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/ink/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/counter/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/dds/cell/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/common/driver-definitions/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/common/core-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/common/core-interfaces/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/common/container-definitions/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| packages/common/client-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| experimental/framework/last-edited/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| experimental/framework/data-objects/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| experimental/dds/tree/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| experimental/dds/sequence-deprecated/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| experimental/dds/ot/sharejs/json1/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| experimental/dds/ot/ot/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/view-integration/view-framework-sampler/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/view-integration/external-views/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/view-integration/container-views/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/version-migration/tree-shim/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/version-migration/separate-container/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/version-migration/same-container/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/version-migration/live-schema-upgrade/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/utils/webpack-fluid-loader/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/utils/migration-tools/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/utils/import-testing/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/utils/example-webpack-integration/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/utils/example-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/utils/example-driver/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/utils/bundle-size-tests/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/service-clients/odsp-client/shared-tree-demo/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/service-clients/azure-client/todo-list/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/service-clients/azure-client/external-controller/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/external-data/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/webflow/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/todo/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/text-editor/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/table-tree/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/table-document/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/smde/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/prosemirror/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/multiview/triangle-view/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/multiview/slider-coordinate-view/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/multiview/plot-coordinate-view/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/multiview/interface/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/multiview/coordinate-model/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/multiview/container/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/multiview/constellation-view/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/multiview/constellation-model/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/monaco/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/inventory-app/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/codemirror/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/clicker/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/data-objects/canvas/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/client-logger/app-insights-logger/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/benchmarks/tablebench/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/benchmarks/odspsnapshotfetch-perftestapp/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/benchmarks/bubblebench/shared-tree/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/benchmarks/bubblebench/ot/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/benchmarks/bubblebench/experimental-tree/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/benchmarks/bubblebench/common/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/benchmarks/bubblebench/baseline/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/apps/tree-comparison/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/apps/tree-cli-app/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/apps/task-selection/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/apps/staging/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/apps/presence-tracker/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/apps/diceroller/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/apps/data-object-grid/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/apps/contact-collection/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/apps/collaborative-textarea/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| examples/apps/blobs/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| azure/packages/azure-service-utils/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| azure/packages/azure-local-service/package.json | Switches eslint-config-fluid dependency to ~9.0.0. |
| "@fluidframework/build-common", | ||
| "@fluidframework/build-tools", | ||
| "@fluidframework/common-utils", | ||
| // Temporarily disabled while eslint-config-fluid is part of the client release group | ||
| // "@fluidframework/eslint-config-fluid", | ||
| "@fluidframework/eslint-config-fluid", | ||
| "@fluidframework/protocol-definitions", |
There was a problem hiding this comment.
Re-enabling @fluidframework/eslint-config-fluid in this versionGroup will make syncpack list-mismatches enforce a single specifier for that dependency across the workspace. Since the root package currently uses a link: spec while most packages are ~9.0.0, this will fail until the root is aligned (or the dependency is excluded again).
Reverses the temporary move of eslint-config-fluid into the client release group (PR microsoft#25806). The package is now an independent workspace again at version 9.0.0. - Set version to 9.0.0, removed private flag and typeValidation - Removed from root pnpm-workspace.yaml - Root package.json uses link: protocol with pnpm override + postinstall - Updated 154 client packages from workspace:~ to ~9.0.0 - Re-enabled syncpack version consistency check - Re-enabled taskPack in eslint-config-fluid pipeline - Removed temporary npm-private-packages policy exclusion - Removed eslint-config-fluid path excludes from build-client pipeline
f471425 to
098813a
Compare
eslint-config-fluid is now an independent workspace referenced via the link: protocol, which syncpack cannot resolve. Add an isIgnored group to prevent UnsupportedMismatch errors.
…dent workspace - Add eslint-config-fluid to independent packages in fluidBuild.config.cjs so flub check layers can find it in the package graph - Add npm-package-types-field exclusion since the package doesn't export TS types - Add semverGroups ignore in syncpack.config.cjs for the link: protocol and tilde ranges used by consumer packages - Sort pnpm.overrides alphabetically in root package.json
…atting Regenerate PACKAGES.md, eslint-config-fluid README, and fix biome formatting in fluidBuild.config.cjs to resolve CI failures.
Retrigger CI to resolve flaky port collision in blobs jest test.
The installed [email protected] hardcodes port 8081 as the starting port for assign-test-ports, causing @fluid-example/blobs to be assigned port 8084 which is in use on CI build agents. Version 2.0.0+ accepts an initialPort parameter (defaulting to 9000), resolving the conflict.
|
🔗 No broken links found! ✅ Your attention to detail is admirable. linkcheck output |
| "@fluidframework/eslint-config-fluid": "workspace:~", | ||
| "@fluidframework/test-tools": "^1.0.195075", | ||
| "@fluidframework/eslint-config-fluid": "~9.0.0", | ||
| "@fluidframework/test-tools": "^2.0.0", |
There was a problem hiding this comment.
I'd say let's split the update of test-tools to its own PR.
| "scripts": { | ||
| "build": "npm run print-configs && npm run prettier", | ||
| "build:readme:disabled": "markdown-magic --files \"**/*.md\"", | ||
| "clean": "rimraf --glob dist \"**/*.build.log\"", |
There was a problem hiding this comment.
This shouldn't be removed, should it?
There was a problem hiding this comment.
We don't need a clean task AFAIK in this package - it doesn't build anything to dist. I'll double-check.
| "^build-tools/", | ||
| "^common/lib/common-utils/package.json", | ||
| ], | ||
| "npm-package-types-field": ["common/build/eslint-config-fluid/package.json"], |
There was a problem hiding this comment.
| "npm-package-types-field": ["common/build/eslint-config-fluid/package.json"], | |
| // Packages that don't need type tests | |
| "npm-package-types-field": ["common/build/eslint-config-fluid/package.json"], |
There was a problem hiding this comment.
It's more that the package doesn't export types.
| ], | ||
| "overrides": { | ||
| "@biomejs/biome": "~2.3.11", | ||
| "@fluidframework/eslint-config-fluid": "link:common/build/eslint-config-fluid", |
There was a problem hiding this comment.
Does this work correctly when other packages are at different depths? I.e. this relative path works fine for the root package.json, but is it interpreted correctly for things inside packages/ and at different levels?
Also, is this temporary until we publish 9.0.0 of our eslint config and then we'll go back to pulling it from npm, or is the intention to continue referencing the local version?
There was a problem hiding this comment.
Does this work correctly when other packages are at different depths?
It seems to.
Also, is this temporary until we publish 9.0.0 of our eslint config and then we'll go back to pulling it from npm, or is the intention to continue referencing the local version?
Planning to go back to npm. That said, if we like the ability to quickly make changes to the config and take effect immediately, then this is my recommended approach. But the plan is going back to publishing.
Summary
Reverses #25806 which temporarily moved
@fluidframework/eslint-config-fluidinto the client release group. The package is restored as an independently versioned workspace at v9.0.0, preparing it for its next published release with ESLint 9 flat config support.Changes
9.0.0, removedprivate: true, removedcleanscript andtypeValidationblock. All ESLint 9 work (flat config, typescript-eslint 8.54, etc.) is preserved.pnpm-workspace.yaml. Rootpackage.jsonnow useslink:protocol with a pnpm override to resolve~9.0.0references across the workspace, plus apostinstallscript to install transitive deps (same pattern asserver/routerliciousandbuild-tools).workspace:~to~9.0.0.npm-private-packagespolicy exclusion.taskPackfor publishing.