Is there any way to embed clientlibs in projects which create front-end code via webpack?
Any documentation or examples are welcomed.
Thanks,
Kiran Vedantam.
Solved! Go to Solution.
I may be off here, I am not clear on the webpack set up you have. But can you see if you can have the file/s to be embedded (included) in a common place and just import them in the entry points of templates (or any other structure you have followed)? Webpack should be able to handle import duplications I think. Not ideal probably since we won't be able to import the clientlib as whole itself may be.
Otherwise, According to https://www.npmjs.com/package/aem-clientlib-generator I see within the clientlib.config.js when generating a clientlib say "test.base.apps.mainapp", can we try to use embed for eg
// or as object (single clientlib)
libs: {
name: "test.base.apps.mainapp",
embed: "test.base.apps.commonstuff",
category: "also.optional"
assets: {
js: [
"src/frontend/js/app.js"
],
css: [
"src/frontend/css/styling.css"
]
}
}
Hi @Kiran_Vedantam ,
ClientLibs are the recommended way when working with AEM, however since webpack is in trend now. You can refer to below examples to work on integration with different approaches:
https://www.initialyze.com/blog/2020/11/how-to-use-dynamic-imports-with-adobe-aem/
https://www.npmjs.com/package/@aem-design/compose-webpack
https://github.com/Bounteous-Inc/aem-webpack-example
Thanks,
Sudesh
Hi @sudesh_16,
Thanks for your response. My requirement is not mentioned in the above-listed blogs.
Thanks,
Kiran Vedantam.
Views
Replies
Total Likes
I may be off here, I am not clear on the webpack set up you have. But can you see if you can have the file/s to be embedded (included) in a common place and just import them in the entry points of templates (or any other structure you have followed)? Webpack should be able to handle import duplications I think. Not ideal probably since we won't be able to import the clientlib as whole itself may be.
Otherwise, According to https://www.npmjs.com/package/aem-clientlib-generator I see within the clientlib.config.js when generating a clientlib say "test.base.apps.mainapp", can we try to use embed for eg
// or as object (single clientlib)
libs: {
name: "test.base.apps.mainapp",
embed: "test.base.apps.commonstuff",
category: "also.optional"
assets: {
js: [
"src/frontend/js/app.js"
],
css: [
"src/frontend/css/styling.css"
]
}
}
Hi @Shubham_borole,
Thanks for the response. It worked. But any idea of adding it at the component-specific client-libs level? after going through the clientlib.config.js, I see the only way to add this is by writing custom JS to fetch the component name add it dynamically. Please suggest.
Thanks,
Kiran Vedantam
Views
Replies
Total Likes
Views
Replies
Total Likes
Views
Replies
Total Likes
Views
Replies
Total Likes
Views
Replies
Total Likes
Views
Replies
Total Likes
Views
Like
Replies