ui5-community / ui5-ecosystem-showcase

A repository showcasing the UI5 tooling extensibility to combine OSS tools for UI5 application development.
https://ui5-community.github.io/ui5-ecosystem-showcase/
Other
189 stars 91 forks source link

[ui5-tooling-modules] Bundling of transitive dependencies makes further processing difficult #989

Open swendlandt opened 2 months ago

swendlandt commented 2 months ago

Is your feature request related to a problem? Please describe. I have a custom UI5 web component package which has a dependency on https://github.com/SAP/ui5-webcomponents/blob/main/packages/localization/src/Assets.ts. This results in many CLDR files being built into the results.

My package also exports multiple components and in every build the transitive dependencies can appear in a different subfolder. For example in build 1 the dependency can be in dist/resources/my/library/thirdparty/my/components/dist/Component1 folder and in the next build it could be in dist/resources/my/library/thirdparty/my/components/dist/Component2. The files are then directly added to this folder, so the original folder structure is lost.

This makes further processing impossible. In my concrete example I want to build a UI5 library and I want to exclude the CLDR files from the library-preload. Because the transitive dependencies are all added to the same folder together with other JS-files which I need in the library-preload, I cannot filter them out with a glob pattern.

Describe the solution you'd like In the build result the structure of the transitive dependencies should be preserved somehow, to make further processing possible. For example if the CLDR files would be located under dist/resources/my/library/thirdparty/my/components/dist/Component1/generated/assets/cldr/*.js instead of dist/resources/my/library/thirdparty/my/components/dist/Component1/*.js I could filter them out with a glob pattern.

petermuessig commented 2 months ago

Hi @swendlandt,

to be precise, the CLDR files should be included but excluded from the library-preload? So you need to have a reliable location. Right now, there's a logic to put the transitive modules/assets nested inside the component using the processing flow from rollup. I need to see whether I can make this more reliable or adding some configuration in the worst case which allows to specify the location for the transitive dependencies. I'll try to build a small example for this to verify the feature and test it for the future.

Cheers, Peter

petermuessig commented 1 month ago

Sorry, that it takes so long - I'm currently restructuring the handling of the 3rd party packages due to this requirement which became a bit more complicated. It's looking good that I can introduce a consistent folder for the chunks into which all chunks will be clustered into. So, you should have a reliable location soon. Still a bit of testing is needed until I can push the change.