feat: recursive search for shared version#2681
feat: recursive search for shared version#2681robdonn wants to merge 2 commits intomodule-federation:mainfrom
Conversation
🦋 Changeset detectedLatest commit: e36fd74 The changes in this PR will be included in the next version bump. This PR includes changesets to release 37 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
❌ Deploy Preview for module-federation-docs failed. Why did it fail? →
|
5b9a3ac to
6d7a50b
Compare
|
I will have to see about backporting this to rspack first before i can consider merge, will follow up |
No problem, let me know if you need any more info/context |
|
no, it makes sense. Just need to look at the rust end and sync the implementation |
cb92225 to
79b38b5
Compare
79b38b5 to
a4c6d41
Compare
There was a problem hiding this comment.
Summary
This pull request introduces a significant enhancement to the @module-federation/enhanced package by enabling recursive searching for the version of shared modules. This functionality is particularly beneficial for monorepo setups where dependencies are often defined in the root package.json, rather than in individual application directories.
Key changes include:
- Implemented logic to traverse parent directories to locate the version of a shared module when it is not specified in the closest
package.json. - Improved compatibility with monorepo structures, allowing for seamless integration of shared dependencies across multiple applications.
- Added error handling to provide warnings when the required version cannot be determined, enhancing the robustness of the module.
- Comprehensive tests have been added to ensure the reliability of the new feature, with all existing tests passing successfully.
Overall, these changes enhance the functionality of the module federation setup, making it more adaptable to complex project structures while maintaining a user-friendly experience.
File Summaries
| File | Summary |
|---|---|
| packages/enhanced/src/lib/sharing/ConsumeSharedPlugin.ts | Enhancements have been made to enable recursive searching for the version of a shared module when it is not specified in the nearest package.json. The changes primarily involve modifying the logic to traverse parent directories until the required version is found, improving compatibility with monorepo structures where dependencies may be defined at the root level. This update also includes error handling to ensure that appropriate warnings are issued when the version cannot be determined. |
Issues Reviewed:
| Issue | Result | Reason |
|---|---|---|
| 2680 | ✅ | The pull request addresses the issue of resolving shared dependency versions in a monorepo setup, as described in the associated issue. |
There was a problem hiding this comment.
Incremental Review
Comments posted: 0
Configuration
Squadron Mode: essential
Commits Reviewed
13861194dc80ea7ea416d3bd9fe45dc348ef9d97...a4c6d417937f7d93dcce1eaaa832b0cf47f47a5f
Files Reviewed
- packages/enhanced/src/lib/sharing/ConsumeSharedPlugin.ts
Files Ignored
These files were ignored due to the filter in the squadron.yaml file.
- .changeset/lucky-fans-exist.md
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/app1/index.js
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/app1/node_modules/lib4/index.js
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/app1/node_modules/lib4/package.json
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/app1/node_modules/lib5/index.js
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/app1/node_modules/store/index.js
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/app1/node_modules/store/package.json
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/app1/package.json
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/app1/relative1.js
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/app1/relative2.js
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/node_modules/lib1/index.js
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/node_modules/lib1/package.json
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/node_modules/lib2/index.js
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/node_modules/lib3/index.js
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/node_modules/lib3/package.json
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/package.json
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/webpack.config.js
a4c6d41 to
e36fd74
Compare
There was a problem hiding this comment.
Incremental Review
Comments posted: 6
Configuration
Squadron Mode: essential
Commits Reviewed
13975e1793d1e1eda4b3aed0ed919fddcff02aaf...e36fd749db46438c4097ab3b54130a6514109157
Files Reviewed
- packages/enhanced/src/lib/sharing/ConsumeSharedPlugin.ts
Files Ignored
These files were ignored due to the filter in the squadron.yaml file.
- .changeset/lucky-fans-exist.md
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/app1/index.js
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/app1/node_modules/lib4/index.js
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/app1/node_modules/lib4/package.json
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/app1/node_modules/lib5/index.js
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/app1/node_modules/store/index.js
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/app1/node_modules/store/package.json
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/app1/package.json
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/app1/relative1.js
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/app1/relative2.js
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/node_modules/lib1/index.js
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/node_modules/lib1/package.json
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/node_modules/lib2/index.js
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/node_modules/lib3/index.js
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/node_modules/lib3/package.json
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/package.json
- packages/enhanced/test/configCases/sharing/share-plugin-monorepo/webpack.config.js
|
Stale pull request message |
Description
Allows
@module-federation/enhancedto recursively search for the version of a shared module when it is not defined in it's closestpackage.json. A common pattern for monorepos is to have dependencies installed in the rootpackage.json.Related Issue
#2680
Types of changes
Checklist