From fc09d8c6c2810e350b0df3d6a09ec2e25f3bcad4 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Tue, 9 Sep 2025 14:28:59 +0200 Subject: [PATCH 01/24] webpack.config.js: Update paths Update `ibexaConfigManager` and `getIbexaConfig` paths --- .../back_office/image_editor/config/webpack.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code_samples/back_office/image_editor/config/webpack.config.js b/code_samples/back_office/image_editor/config/webpack.config.js index ef64950295..083c4ff136 100644 --- a/code_samples/back_office/image_editor/config/webpack.config.js +++ b/code_samples/back_office/image_editor/config/webpack.config.js @@ -1,10 +1,10 @@ const Encore = require('@symfony/webpack-encore'); const path = require('path'); -const getIbexaConfig = require('./ibexa.webpack.config.js'); +const getIbexaConfig = require('@ibexa/frontend-config/webpack-config/ibexa'); const ibexaConfig = getIbexaConfig(Encore); const customConfigs = require('./ibexa.webpack.custom.configs.js'); const { isReactBlockPathCreated } = require('./ibexa.webpack.config.react.blocks.js'); -const ibexaConfigManager = require('./ibexa.webpack.config.manager.js'); +const ibexaConfigManager = require('@ibexa/frontend-config/webpack-config/manager'); Encore.reset(); Encore From ccbeb83cfc8c5b74997296e1eb6832ab523b9f07 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Tue, 9 Sep 2025 15:39:14 +0200 Subject: [PATCH 02/24] Update webpack.config.js for 5.0 Get `ibexaConfigManager` and `getIbexaConfig`, now absent by default, then use them, and finally add ibexaConfig to module.exports --- .../image_editor/config/webpack.config.js | 47 +++++++++---------- .../images/extend_image_editor.md | 7 ++- 2 files changed, 26 insertions(+), 28 deletions(-) diff --git a/code_samples/back_office/image_editor/config/webpack.config.js b/code_samples/back_office/image_editor/config/webpack.config.js index 083c4ff136..bb927a21fa 100644 --- a/code_samples/back_office/image_editor/config/webpack.config.js +++ b/code_samples/back_office/image_editor/config/webpack.config.js @@ -1,34 +1,30 @@ -const Encore = require('@symfony/webpack-encore'); +const fs = require('fs'); const path = require('path'); -const getIbexaConfig = require('@ibexa/frontend-config/webpack-config/ibexa'); -const ibexaConfig = getIbexaConfig(Encore); -const customConfigs = require('./ibexa.webpack.custom.configs.js'); -const { isReactBlockPathCreated } = require('./ibexa.webpack.config.react.blocks.js'); -const ibexaConfigManager = require('@ibexa/frontend-config/webpack-config/manager'); +const Encore = require('@symfony/webpack-encore'); +const getWebpackConfigs = require('@ibexa/frontend-config/webpack-config/get-configs'); +const customConfigsPaths = require('./var/encore/ibexa.webpack.custom.config.js'); + +const customConfigs = getWebpackConfigs(Encore, customConfigsPaths); +const isReactBlockPathCreated = fs.existsSync('./assets/page-builder/react/blocks'); Encore.reset(); Encore .setOutputPath('public/build/') .setPublicPath('/build') - .enableStimulusBridge('./assets/controllers.json') .enableSassLoader() - .enableReactPreset() + .enableReactPreset((options) => { + options.runtime = 'classic'; + }) .enableSingleRuntimeChunk() .copyFiles({ from: './assets/images', to: 'images/[path][name].[ext]', - pattern: /\.(png|svg)$/ + pattern: /\.(png|svg)$/, }) - .configureBabel((config) => { - config.plugins.push('@babel/plugin-proposal-class-properties'); - }) - - // enables @babel/preset-env polyfills .configureBabelPresetEnv((config) => { config.useBuiltIns = 'usage'; config.corejs = 3; - }) -; + }); // Welcome page stylesheets Encore.addEntry('welcome-page-css', [ @@ -47,18 +43,21 @@ if (isReactBlockPathCreated) { Encore.addEntry('app', './assets/app.js'); -// Image Editor Dot Action +const projectConfig = Encore.getWebpackConfig(); + +projectConfig.name = 'app'; + +/* Get ibexaConfig and ibexaConfigManager */ +const ibexaConfigManager = require('@ibexa/frontend-config/webpack-config/manager'); +const getIbexaConfig = require('@ibexa/frontend-config/webpack-config/ibexa'); +const ibexaConfig = getIbexaConfig(); + +/* Add entries to Admin UI layout JS */ ibexaConfigManager.add({ ibexaConfig, entryName: 'ibexa-admin-ui-layout-js', newItems: [ path.resolve(__dirname, './assets/random_dot/random-dot.js'), ], }); -const projectConfig = Encore.getWebpackConfig(); - -projectConfig.name = 'app'; - +/* Add ibexaConfig to module.exports */ module.exports = [ibexaConfig, ...customConfigs, projectConfig]; - -// uncomment this line if you've commented-out the above lines -// module.exports = [ eZConfig, ibexaConfig, ...customConfigs ]; diff --git a/docs/content_management/images/extend_image_editor.md b/docs/content_management/images/extend_image_editor.md index 3c780f3dd9..7fa42468ee 100644 --- a/docs/content_management/images/extend_image_editor.md +++ b/docs/content_management/images/extend_image_editor.md @@ -32,11 +32,10 @@ Configure the new Image Editor action under the `ibexa.system..image_edit ## Add entry to the Webpack configuration Once you create and configure the React component, you must add an entry to [the Webpack configuration](3_customize_the_front_page.md#configuring-webpack). -In the root directory of your project, modify the `webpack.config.js` file by adding the following code: +In the root directory of your project, modify the `webpack.config.js` file by adding the following code in replacement of the default `module.exports = [...customConfigs, projectConfig];`: -``` js -[[= include_file('code_samples/back_office/image_editor/config/webpack.config.js', 6, 7) =]]//... -[[= include_file('code_samples/back_office/image_editor/config/webpack.config.js', 50, 55) =]] +``` js hl_lines="10 14" +[[= include_file('code_samples/back_office/image_editor/config/webpack.config.js', 49, 63) =]] ``` At this point you should be able to see a new button in the Image Editor's UI. From cfe8ef51dd375e51ba8291326ba5f157b5b90cba Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Tue, 9 Sep 2025 16:07:52 +0200 Subject: [PATCH 03/24] Update webpack.config.js for 5.0 No need to add ibexaConfig to module.exports --- .../back_office/image_editor/config/webpack.config.js | 5 ++--- docs/content_management/images/extend_image_editor.md | 6 +++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/code_samples/back_office/image_editor/config/webpack.config.js b/code_samples/back_office/image_editor/config/webpack.config.js index bb927a21fa..4b617d1720 100644 --- a/code_samples/back_office/image_editor/config/webpack.config.js +++ b/code_samples/back_office/image_editor/config/webpack.config.js @@ -47,6 +47,8 @@ const projectConfig = Encore.getWebpackConfig(); projectConfig.name = 'app'; +module.exports = [...customConfigs, projectConfig]; + /* Get ibexaConfig and ibexaConfigManager */ const ibexaConfigManager = require('@ibexa/frontend-config/webpack-config/manager'); const getIbexaConfig = require('@ibexa/frontend-config/webpack-config/ibexa'); @@ -58,6 +60,3 @@ ibexaConfigManager.add({ entryName: 'ibexa-admin-ui-layout-js', newItems: [ path.resolve(__dirname, './assets/random_dot/random-dot.js'), ], }); - -/* Add ibexaConfig to module.exports */ -module.exports = [ibexaConfig, ...customConfigs, projectConfig]; diff --git a/docs/content_management/images/extend_image_editor.md b/docs/content_management/images/extend_image_editor.md index 7fa42468ee..c091daf887 100644 --- a/docs/content_management/images/extend_image_editor.md +++ b/docs/content_management/images/extend_image_editor.md @@ -32,10 +32,10 @@ Configure the new Image Editor action under the `ibexa.system..image_edit ## Add entry to the Webpack configuration Once you create and configure the React component, you must add an entry to [the Webpack configuration](3_customize_the_front_page.md#configuring-webpack). -In the root directory of your project, modify the `webpack.config.js` file by adding the following code in replacement of the default `module.exports = [...customConfigs, projectConfig];`: +In the root directory of your project, modify the `webpack.config.js` file by appending the following code: -``` js hl_lines="10 14" -[[= include_file('code_samples/back_office/image_editor/config/webpack.config.js', 49, 63) =]] +``` js hl_lines="10" +[[= include_file('code_samples/back_office/image_editor/config/webpack.config.js', 51, 62) =]] ``` At this point you should be able to see a new button in the Image Editor's UI. From 16f9f677c5a749fd0227a53b5621b2e711827f69 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Tue, 9 Sep 2025 16:16:43 +0200 Subject: [PATCH 04/24] Update webpack.config.js for 5.0 --- code_samples/back_office/image_editor/config/webpack.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code_samples/back_office/image_editor/config/webpack.config.js b/code_samples/back_office/image_editor/config/webpack.config.js index 4b617d1720..c3ca3e3c1b 100644 --- a/code_samples/back_office/image_editor/config/webpack.config.js +++ b/code_samples/back_office/image_editor/config/webpack.config.js @@ -54,7 +54,7 @@ const ibexaConfigManager = require('@ibexa/frontend-config/webpack-config/manage const getIbexaConfig = require('@ibexa/frontend-config/webpack-config/ibexa'); const ibexaConfig = getIbexaConfig(); -/* Add entries to Admin UI layout JS */ +/* Add dot action to Admin UI layout JS */ ibexaConfigManager.add({ ibexaConfig, entryName: 'ibexa-admin-ui-layout-js', From db8462151be30ba3834cd35d954a80bd8ddeddaf Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Tue, 9 Sep 2025 16:42:04 +0200 Subject: [PATCH 05/24] Update append_to_webpack.config.js for 5.0 --- code_samples/back_office/search/append_to_webpack.config.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code_samples/back_office/search/append_to_webpack.config.js b/code_samples/back_office/search/append_to_webpack.config.js index 5146bc2a0e..72c4e9bfa5 100644 --- a/code_samples/back_office/search/append_to_webpack.config.js +++ b/code_samples/back_office/search/append_to_webpack.config.js @@ -1,4 +1,6 @@ -const ibexaConfigManager = require('./ibexa.webpack.config.manager.js'); +const ibexaConfigManager = require('@ibexa/frontend-config/webpack-config/manager'); +const getIbexaConfig = require('@ibexa/frontend-config/webpack-config/ibexa'); +const ibexaConfig = getIbexaConfig(); ibexaConfigManager.add({ ibexaConfig, From 1aa1070e65d156b8e2132753f2e47d53ee3f23e6 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 13 Aug 2026 10:17:11 +0200 Subject: [PATCH 06/24] add_browser_tab.md: Update Webpack Ibexa config usage --- .../back_office/browser/add_browser_tab.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/administration/back_office/browser/add_browser_tab.md b/docs/administration/back_office/browser/add_browser_tab.md index 951636768d..484b827ff7 100644 --- a/docs/administration/back_office/browser/add_browser_tab.md +++ b/docs/administration/back_office/browser/add_browser_tab.md @@ -37,17 +37,19 @@ The module governs the creation of the new tab.
Complete image.tab.module.js code -```js +``` js [[= include_file('code_samples/back_office/udw/assets/js/image-tab/image.tab.module.js') =]] ```
## Add tab to webpack config -In `webpack.config.js`, add the following declaration: +In `webpack.config.js`, add the following declarations: ```js const ibexaConfigManager = require('./ibexa.webpack.config.manager.js'); +const getIbexaConfig = require('@ibexa/frontend-config/webpack-config/ibexa'); +const ibexaConfig = getIbexaConfig(); ``` Next, provide configuration for the new module: @@ -60,6 +62,12 @@ ibexaConfigManager.add({ }); ``` +Finally, export the module back: + +```js +module.exports = [ibexaConfig, ...customConfigs, projectConfig]; +``` + ## Provide ReactJS files Next, you need to provide a set of files used to render the module: From 3f6b2555b8568d121711154b76a26e9bd39756ca Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 13 Aug 2026 10:17:47 +0200 Subject: [PATCH 07/24] Apply suggestion from @adriendupuis --- code_samples/back_office/image_editor/config/webpack.config.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code_samples/back_office/image_editor/config/webpack.config.js b/code_samples/back_office/image_editor/config/webpack.config.js index c3ca3e3c1b..0263da236a 100644 --- a/code_samples/back_office/image_editor/config/webpack.config.js +++ b/code_samples/back_office/image_editor/config/webpack.config.js @@ -60,3 +60,5 @@ ibexaConfigManager.add({ entryName: 'ibexa-admin-ui-layout-js', newItems: [ path.resolve(__dirname, './assets/random_dot/random-dot.js'), ], }); + +module.exports = [ibexaConfig, ...customConfigs, projectConfig]; From 5d32bf2ccecc6318f8b37fe8edbb515ca2c4ee23 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 13 Aug 2026 10:30:36 +0200 Subject: [PATCH 08/24] extend_image_editor.md: module.exports --- code_samples/back_office/image_editor/config/webpack.config.js | 1 + docs/content_management/images/extend_image_editor.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/code_samples/back_office/image_editor/config/webpack.config.js b/code_samples/back_office/image_editor/config/webpack.config.js index 0263da236a..46f21abe1d 100644 --- a/code_samples/back_office/image_editor/config/webpack.config.js +++ b/code_samples/back_office/image_editor/config/webpack.config.js @@ -61,4 +61,5 @@ ibexaConfigManager.add({ newItems: [ path.resolve(__dirname, './assets/random_dot/random-dot.js'), ], }); +/* Export updated ibexaConfig and previous modules. */ module.exports = [ibexaConfig, ...customConfigs, projectConfig]; diff --git a/docs/content_management/images/extend_image_editor.md b/docs/content_management/images/extend_image_editor.md index 18ae612ab5..095a0ceef2 100644 --- a/docs/content_management/images/extend_image_editor.md +++ b/docs/content_management/images/extend_image_editor.md @@ -35,7 +35,7 @@ Once you create and configure the React component, you must add an entry to [the In the root directory of your project, modify the `webpack.config.js` file by appending the following code: ``` js hl_lines="10" -[[= include_file('code_samples/back_office/image_editor/config/webpack.config.js', 51, 62) =]] +[[= include_code('code_samples/back_office/image_editor/config/webpack.config.js', 52, 65) =]] ``` At this point you should be able to see a new button in the Image Editor's UI. From 9fefad8e850b64412e630a5f560dbebb41230055 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 13 Aug 2026 10:54:34 +0200 Subject: [PATCH 09/24] `webpack.config.js` usage update --- .../from_4.6/update_to_5.0.md | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/docs/update_and_migration/from_4.6/update_to_5.0.md b/docs/update_and_migration/from_4.6/update_to_5.0.md index 7d60180688..75114e5ae6 100644 --- a/docs/update_and_migration/from_4.6/update_to_5.0.md +++ b/docs/update_and_migration/from_4.6/update_to_5.0.md @@ -250,7 +250,7 @@ rm assets/bootstrap.js composer recipes:install symfony/webpack-encore-bundle --reset --force --yes ``` -Compare with your previous version, merge them together and test your customizations if needed. +Compare with your previous version, merge them together, take care of [`webpackconfig.js` usage changee](#webpackconfigjs-usage-update), and test your customizations. #### Apply [[= product_name =]] recipe @@ -536,7 +536,7 @@ In the following example, you can see optimization thanks to the following featu #### Update JavaScript -If you haven't renamed your Webpack file since 3.3, do it now as v5.0 no longer supports the old names. +If you haven't renamed your Webpack file since 3.3, do it now as 5.0 no longer supports the old names. | Old name | New name | |:----------------------------|:-------------------------------| @@ -592,6 +592,27 @@ Run it using the following command: yarn --cwd ./vendor/ibexa/rector/js transform ``` +##### `webpack.config.js` usage update + +To add your custimizations back into to the new webpack.config.js, take care of the following change. + +Contrary to 4.6, in 5.0, `ibexaConfig` isn't available by default in `webpack.config.js`. You have to require then export it. + +```diff +const ibexaConfigManager = require('./ibexa.webpack.config.manager.js'); ++ const getIbexaConfig = require('@ibexa/frontend-config/webpack-config/ibexa'); ++ const ibexaConfig = getIbexaConfig(); + +ibexaConfigManager.add({ + ibexaConfig, +... +}); + ++ module.exports = [ibexaConfig, ...customConfigs, projectConfig]; +``` + + + #### Update field type identifiers Several field type identifiers have changed. @@ -602,7 +623,7 @@ The output as an `alias` column with new identifiers and a `legacy_alias` column ??? note "Field type identifiers renaming map" - | old identifier (`legacy_alias`) | new identifier (`alias`) | + | Old identifier (`legacy_alias`) | New identifier (`alias`) | |:--------------------------------|:--------------------------------| | ibexa_address | ibexa_address | | ezauthor | ibexa_author | From 46de0513aafc8f78eb7d1a062968314fd349a078 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 13 Aug 2026 10:57:19 +0200 Subject: [PATCH 10/24] `webpack.config.js` usage update (js instead of diff) --- docs/update_and_migration/from_4.6/update_to_5.0.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/update_and_migration/from_4.6/update_to_5.0.md b/docs/update_and_migration/from_4.6/update_to_5.0.md index 75114e5ae6..5f93e8d0cd 100644 --- a/docs/update_and_migration/from_4.6/update_to_5.0.md +++ b/docs/update_and_migration/from_4.6/update_to_5.0.md @@ -598,17 +598,17 @@ To add your custimizations back into to the new webpack.config.js, take care of Contrary to 4.6, in 5.0, `ibexaConfig` isn't available by default in `webpack.config.js`. You have to require then export it. -```diff +```js hl_lines="2 3 10" const ibexaConfigManager = require('./ibexa.webpack.config.manager.js'); -+ const getIbexaConfig = require('@ibexa/frontend-config/webpack-config/ibexa'); -+ const ibexaConfig = getIbexaConfig(); +const getIbexaConfig = require('@ibexa/frontend-config/webpack-config/ibexa'); +const ibexaConfig = getIbexaConfig(); ibexaConfigManager.add({ ibexaConfig, -... + //… }); -+ module.exports = [ibexaConfig, ...customConfigs, projectConfig]; +module.exports = [ibexaConfig, ...customConfigs, projectConfig]; ``` From 0541629ae8060a010c657c4a5b2c4f4b215a0684 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 13 Aug 2026 11:22:42 +0200 Subject: [PATCH 11/24] customize_search_suggestion.md: module.exports --- code_samples/back_office/search/append_to_webpack.config.js | 2 ++ docs/administration/back_office/customize_search_suggestion.md | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/code_samples/back_office/search/append_to_webpack.config.js b/code_samples/back_office/search/append_to_webpack.config.js index 72c4e9bfa5..af59388a82 100644 --- a/code_samples/back_office/search/append_to_webpack.config.js +++ b/code_samples/back_office/search/append_to_webpack.config.js @@ -7,3 +7,5 @@ ibexaConfigManager.add({ entryName: 'ibexa-admin-ui-layout-js', newItems: [path.resolve(__dirname, './assets/js/admin.search.autocomplete.product.js')], }); + +module.exports = [ibexaConfig, ...customConfigs, projectConfig]; diff --git a/docs/administration/back_office/customize_search_suggestion.md b/docs/administration/back_office/customize_search_suggestion.md index dc185ac40b..435008df8c 100644 --- a/docs/administration/back_office/customize_search_suggestion.md +++ b/docs/administration/back_office/customize_search_suggestion.md @@ -120,7 +120,7 @@ At the end of `webpack.config.js`, add it by using `ibexaConfigManager`: ``` javascript //… -[[= include_file('code_samples/back_office/search/append_to_webpack.config.js') =]] +[[= include_code('code_samples/back_office/search/append_to_webpack.config.js') =]] ``` The renderer, `renderItem` function from `admin.search.autocomplete.product.js`, loads an HTML template from a wrapping DOM node [dataset](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/dataset). From 67853e55fc118e5dd85bd7c7a5446f392386df15 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 13 Aug 2026 11:25:10 +0200 Subject: [PATCH 12/24] =?UTF-8?q?image=5Feditor/=E2=80=A6/webpack.config.j?= =?UTF-8?q?s=20format?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code_samples/back_office/image_editor/config/webpack.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code_samples/back_office/image_editor/config/webpack.config.js b/code_samples/back_office/image_editor/config/webpack.config.js index 46f21abe1d..760fc19713 100644 --- a/code_samples/back_office/image_editor/config/webpack.config.js +++ b/code_samples/back_office/image_editor/config/webpack.config.js @@ -61,5 +61,5 @@ ibexaConfigManager.add({ newItems: [ path.resolve(__dirname, './assets/random_dot/random-dot.js'), ], }); -/* Export updated ibexaConfig and previous modules. */ +/* Export updated ibexaConfig and previous modules */ module.exports = [ibexaConfig, ...customConfigs, projectConfig]; From b6e31a3c4b938aadfb6d7aab2a66e757cab723b5 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 13 Aug 2026 11:43:23 +0200 Subject: [PATCH 13/24] =?UTF-8?q?custom=5Fform=5Fattribute/=E2=80=A6/webpa?= =?UTF-8?q?ck.config.js=20update?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../custom_form_attribute/webpack.config.js | 32 ++++++++----------- .../forms/create_form_attribute.md | 4 +-- 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/code_samples/forms/custom_form_attribute/webpack.config.js b/code_samples/forms/custom_form_attribute/webpack.config.js index ae74f9e82a..bc93fbbff8 100644 --- a/code_samples/forms/custom_form_attribute/webpack.config.js +++ b/code_samples/forms/custom_form_attribute/webpack.config.js @@ -1,33 +1,30 @@ -const Encore = require('@symfony/webpack-encore'); +const fs = require('fs'); const path = require('path'); -const getIbexaConfig = require('./ibexa.webpack.config.js'); -const ibexaConfig = getIbexaConfig(Encore); -const customConfigs = require('./ibexa.webpack.custom.configs.js'); -const { isReactBlockPathCreated } = require('./ibexa.webpack.config.react.blocks.js'); +const Encore = require('@symfony/webpack-encore'); +const getWebpackConfigs = require('@ibexa/frontend-config/webpack-config/get-configs'); +const customConfigsPaths = require('./var/encore/ibexa.webpack.custom.config.js'); + +const customConfigs = getWebpackConfigs(Encore, customConfigsPaths); +const isReactBlockPathCreated = fs.existsSync('./assets/page-builder/react/blocks'); Encore.reset(); Encore .setOutputPath('public/build/') .setPublicPath('/build') - .enableStimulusBridge('./assets/controllers.json') .enableSassLoader() - .enableReactPreset() + .enableReactPreset((options) => { + options.runtime = 'classic'; + }) .enableSingleRuntimeChunk() .copyFiles({ from: './assets/images', to: 'images/[path][name].[ext]', - pattern: /\.(png|svg)$/ + pattern: /\.(png|svg)$/, }) - .configureBabel((config) => { - config.plugins.push('@babel/plugin-proposal-class-properties'); - }) - - // enables @babel/preset-env polyfills .configureBabelPresetEnv((config) => { config.useBuiltIns = 'usage'; config.corejs = 3; - }) -; + }); // Welcome page stylesheets Encore.addEntry('welcome-page-css', [ @@ -52,7 +49,4 @@ const projectConfig = Encore.getWebpackConfig(); projectConfig.name = 'app'; -module.exports = [ibexaConfig, ...customConfigs, projectConfig]; - -// uncomment this line if you've commented-out the above lines -// module.exports = [ eZConfig, ibexaConfig, ...customConfigs ]; +module.exports = [...customConfigs, projectConfig]; diff --git a/docs/content_management/forms/create_form_attribute.md b/docs/content_management/forms/create_form_attribute.md index d1bc949653..192311ce21 100644 --- a/docs/content_management/forms/create_form_attribute.md +++ b/docs/content_management/forms/create_form_attribute.md @@ -72,8 +72,8 @@ Provide the required script in a new `assets/js/formbuilder-richtext-checkbox.js Then, paste the highlighted part of the code into the `webpack.config.js` file: -``` js hl_lines="49" -[[= include_file('code_samples/forms/custom_form_attribute/webpack.config.js') =]] +``` js hl_lines="46" +[[= include_code('code_samples/forms/custom_form_attribute/webpack.config.js') =]] ``` Clear the cache and regenerate the assets by running the following commands: From 9be49150e2febd36a883fa6fa4514ef74f986818 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 13 Aug 2026 11:46:36 +0200 Subject: [PATCH 14/24] ai_actions/webpack.config.js update --- code_samples/ai_actions/webpack.config.js | 6 +++++- docs/ai/ai_actions/extend_ai_actions.md | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/code_samples/ai_actions/webpack.config.js b/code_samples/ai_actions/webpack.config.js index 9b28fa5dda..882fbea966 100644 --- a/code_samples/ai_actions/webpack.config.js +++ b/code_samples/ai_actions/webpack.config.js @@ -1,4 +1,6 @@ -const ibexaConfigManager = require('./ibexa.webpack.config.manager.js'); +const ibexaConfigManager = require('@ibexa/frontend-config/webpack-config/manager'); +const getIbexaConfig = require('@ibexa/frontend-config/webpack-config/ibexa'); +const ibexaConfig = getIbexaConfig(); ibexaConfigManager.add({ ibexaConfig, @@ -7,3 +9,5 @@ ibexaConfigManager.add({ path.resolve(__dirname, './assets/js/addAudioModule.js') ], }); + +module.exports = [ibexaConfig, ...customConfigs, projectConfig]; diff --git a/docs/ai/ai_actions/extend_ai_actions.md b/docs/ai/ai_actions/extend_ai_actions.md index b64718fe83..47ba8701c9 100644 --- a/docs/ai/ai_actions/extend_ai_actions.md +++ b/docs/ai/ai_actions/extend_ai_actions.md @@ -366,7 +366,7 @@ And include it into the back office using Webpack Encore. See [configuring assets from main project files](importing_assets_from_bundle.md#configuration-from-main-project-files) to learn more about this mechanism. ``` js -[[= include_file('code_samples/ai_actions/webpack.config.js') =]] +[[= include_code('code_samples/ai_actions/webpack.config.js') =]] ``` Your custom Action Type is now fully integrated into the back office UI and can be used by the Editors. From 0bfabd0ea484be8d21b5235ea019b5bb3a2a7c04 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 13 Aug 2026 11:50:19 +0200 Subject: [PATCH 15/24] Update importing_assets_from_bundle.md --- .../importing_assets_from_bundle.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/administration/back_office/back_office_elements/importing_assets_from_bundle.md b/docs/administration/back_office/back_office_elements/importing_assets_from_bundle.md index 992049a038..4949a24b23 100644 --- a/docs/administration/back_office/back_office_elements/importing_assets_from_bundle.md +++ b/docs/administration/back_office/back_office_elements/importing_assets_from_bundle.md @@ -103,14 +103,16 @@ To add a new configuration under your own namespace and with its own dependencie ## Configuration from main project files -If you prefer to include the asset configuration in the main project files, add it in [`webpack.config.js`](https://github.com/ibexa/recipes/blob/master/ibexa/oss/4.6/encore/webpack.config.js#L26). +If you prefer to include the asset configuration in the main project files, add it in [`webpack.config.js`](https://github.com/ibexa/recipes/blob/master/ibexa/oss/5.0/encore/webpack.config.js#L26). To overwrite the built-in assets, use the following configuration to replace, remove, or add asset files in `webpack.config.js`: ``` js -const ibexaConfigManager = require('./ibexa.webpack.config.manager.js'); +const ibexaConfigManager = require('@ibexa/frontend-config/webpack-config/manager'); +const getIbexaConfig = require('@ibexa/frontend-config/webpack-config/ibexa'); +const ibexaConfig = getIbexaConfig(); -//... +//… ibexaConfigManager.replace({ ibexaConfig, @@ -136,4 +138,9 @@ ibexaConfigManager.add({ path.resolve(__dirname, ''), ], }); + +//… + +module.exports = [ibexaConfig, ...customConfigs, projectConfig]; + ``` From b723589554c0c99329951c790f6f70d1ff0fcd52 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 13 Aug 2026 12:56:29 +0200 Subject: [PATCH 16/24] importing_assets_from_bundle.md: convert tabs into 4 spaces --- .../importing_assets_from_bundle.md | 72 +++++++++---------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/docs/administration/back_office/back_office_elements/importing_assets_from_bundle.md b/docs/administration/back_office/back_office_elements/importing_assets_from_bundle.md index 4949a24b23..55c0d91672 100644 --- a/docs/administration/back_office/back_office_elements/importing_assets_from_bundle.md +++ b/docs/administration/back_office/back_office_elements/importing_assets_from_bundle.md @@ -14,8 +14,8 @@ To import assets from a bundle, configure them in an `ibexa.config.js` file that const path = require('path'); module.exports = (Encore) => { - Encore.addEntry('', [ - path.resolve(__dirname, ''), + Encore.addEntry('', [ + path.resolve(__dirname, ''), ]); }; ``` @@ -40,35 +40,35 @@ To edit existing configuration entries, either in the bundle's `Resources/encore const path = require('path'); module.exports = (ibexaConfig, ibexaConfigManager) => { - ibexaConfigManager.replace({ - ibexaConfig, - entryName: '', - itemToReplace: path.resolve(__dirname, ''), - newItem: path.resolve(__dirname, ''), - }); - ibexaConfigManager.remove({ - ibexaConfig, - entryName: '', - itemsToRemove: [ - path.resolve(__dirname, ''), - path.resolve(__dirname, ''), - ], - }); - ibexaConfigManager.add({ - ibexaConfig, - entryName: '', - newItems: [ - path.resolve(__dirname, ''), - path.resolve(__dirname, ''), - ], - }); + ibexaConfigManager.replace({ + ibexaConfig, + entryName: '', + itemToReplace: path.resolve(__dirname, ''), + newItem: path.resolve(__dirname, ''), + }); + ibexaConfigManager.remove({ + ibexaConfig, + entryName: '', + itemsToRemove: [ + path.resolve(__dirname, ''), + path.resolve(__dirname, ''), + ], + }); + ibexaConfigManager.add({ + ibexaConfig, + entryName: '', + newItems: [ + path.resolve(__dirname, ''), + path.resolve(__dirname, ''), + ], + }); }; ``` !!! tip - If you don't know what `entryName` to use, you can use the browser's developer tools to check what files are loaded on the given page. - Then, use the file name as `entryName`. + If you don't know what `entryName` to use, you can use the browser's developer tools to check what files are loaded on the given page. + Then, use the file name as `entryName`. !!! tip @@ -79,20 +79,20 @@ module.exports = (ibexaConfig, ibexaConfigManager) => { To add a new configuration under your own namespace and with its own dependencies, create an `ibexa.webpack.custom.config.js` file that you create either in the bundle's `Resources/encore/` folder, or in the `encore` folder in the root directory of your project, for example: ``` js - const Encore = require('@symfony/webpack-encore'); + const Encore = require('@symfony/webpack-encore'); - Encore.setOutputPath('') - .setPublicPath('') - .addExternals('') - // ... - .addEntry('', ['']); + Encore.setOutputPath('') + .setPublicPath('') + .addExternals('') + // ... + .addEntry('', ['']); - const customConfig = Encore.getWebpackConfig(); + const customConfig = Encore.getWebpackConfig(); - customConfig.name = 'customConfigName'; + customConfig.name = 'customConfigName'; - // Config or array of configs: [customConfig1, customConfig2]; - module.exports = customConfig; + // Config or array of configs: [customConfig1, customConfig2]; + module.exports = customConfig; ``` !!! tip From dc72a37d26b5c891c79de11091026040678bc173 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 13 Aug 2026 13:50:22 +0200 Subject: [PATCH 17/24] update_to_5.0.md: month_change: true --- docs/update_and_migration/from_4.6/update_to_5.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/update_and_migration/from_4.6/update_to_5.0.md b/docs/update_and_migration/from_4.6/update_to_5.0.md index 5f93e8d0cd..a99a71edfe 100644 --- a/docs/update_and_migration/from_4.6/update_to_5.0.md +++ b/docs/update_and_migration/from_4.6/update_to_5.0.md @@ -1,6 +1,6 @@ --- description: Update your installation to v5.0 from the latest v4.6 version. -month_change: false +month_change: true --- # Update from v4.6 to v5.0 From 87038e3e706dd45d808635dabf75a23539a54e92 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 13 Aug 2026 13:56:38 +0200 Subject: [PATCH 18/24] add_browser_tab.md: include_file -> include_code --- .../back_office/browser/add_browser_tab.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/administration/back_office/browser/add_browser_tab.md b/docs/administration/back_office/browser/add_browser_tab.md index 484b827ff7..8a374b4dda 100644 --- a/docs/administration/back_office/browser/add_browser_tab.md +++ b/docs/administration/back_office/browser/add_browser_tab.md @@ -16,7 +16,7 @@ Follow the instructions below to create and add a new tab called **Images** whic First, in `assets/js/image-tab/`, add an `image.tab.module.js` file. ``` js -[[= include_file('code_samples/back_office/udw/assets/js/image-tab/image.tab.module.js', 0, 14) =]] +[[= include_code('code_samples/back_office/udw/assets/js/image-tab/image.tab.module.js', 1, 14) =]] ``` Next, add the tab to the configuration in the same file. @@ -29,8 +29,8 @@ Each tab definition is an object containing the following properties: |label|string|Label text, for example, `Images`.| |icon|string|Path to the icon, for example, `/bundles/ibexaadminuiassets/vendors/ids-assets/dist/img/all-icons.svg#info-square`.| -```js -[[= include_file('code_samples/back_office/udw/assets/js/image-tab/image.tab.module.js', 14, 29) =]] +``` js +[[= include_code('code_samples/back_office/udw/assets/js/image-tab/image.tab.module.js', 15, 28) =]] ``` The module governs the creation of the new tab. @@ -38,7 +38,7 @@ The module governs the creation of the new tab.
Complete image.tab.module.js code ``` js -[[= include_file('code_samples/back_office/udw/assets/js/image-tab/image.tab.module.js') =]] +[[= include_code('code_samples/back_office/udw/assets/js/image-tab/image.tab.module.js') =]] ```
@@ -80,24 +80,24 @@ Next, you need to provide a set of files used to render the module: Create a service for fetching the images by adding `images.service.js` to `assets/js/image-tab/services/`: -```js -[[= include_file('code_samples/back_office/udw/assets/js/image-tab/services/images.service.js') =]] +``` js +[[= include_code('code_samples/back_office/udw/assets/js/image-tab/services/images.service.js') =]] ``` ### `images.list.js` Next, create an image list by adding an `images.list.js` to `assets/js/image-tab/components/`: -```js -[[= include_file('code_samples/back_office/udw/assets/js/image-tab/components/images.list.js') =]] +``` js +[[= include_code('code_samples/back_office/udw/assets/js/image-tab/components/images.list.js') =]] ``` ### `image.js` Finally, create an image view by adding an `image.js` to `assets/js/image-tab/components/`: -```js -[[= include_file('code_samples/back_office/udw/assets/js/image-tab/components/image.js') =]] +``` js +[[= include_code('code_samples/back_office/udw/assets/js/image-tab/components/image.js') =]] ``` ## Add styles @@ -106,14 +106,14 @@ Ensure that the new tab is styled by adding the following files to `assets/css/` ### `images.list.css` -```css -[[= include_file('code_samples/back_office/udw/assets/css/image.list.css') =]] +``` css +[[= include_code('code_samples/back_office/udw/assets/css/image.list.css') =]] ``` ### `image.css` -```css -[[= include_file('code_samples/back_office/udw/assets/css/image.css') =]] +``` css +[[= include_code('code_samples/back_office/udw/assets/css/image.css') =]] ``` ### Add CSS to webpack From b35a58dbd2ca0fa1b6bdaee0ab17e5baa612fa12 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 13 Aug 2026 13:58:21 +0200 Subject: [PATCH 19/24] update_to_5.0.md: Fix Multiple consecutive blank lines --- docs/update_and_migration/from_4.6/update_to_5.0.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/update_and_migration/from_4.6/update_to_5.0.md b/docs/update_and_migration/from_4.6/update_to_5.0.md index a99a71edfe..d462a35f92 100644 --- a/docs/update_and_migration/from_4.6/update_to_5.0.md +++ b/docs/update_and_migration/from_4.6/update_to_5.0.md @@ -611,8 +611,6 @@ ibexaConfigManager.add({ module.exports = [ibexaConfig, ...customConfigs, projectConfig]; ``` - - #### Update field type identifiers Several field type identifiers have changed. From 85646dc9aee5d5fef8fa597ae61b7945d610241d Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 13 Aug 2026 14:12:54 +0200 Subject: [PATCH 20/24] Remove ./ibexa.webpack.config.manager.js --- docs/administration/back_office/browser/add_browser_tab.md | 2 +- docs/update_and_migration/from_4.6/update_to_5.0.md | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/administration/back_office/browser/add_browser_tab.md b/docs/administration/back_office/browser/add_browser_tab.md index 8a374b4dda..649bb41411 100644 --- a/docs/administration/back_office/browser/add_browser_tab.md +++ b/docs/administration/back_office/browser/add_browser_tab.md @@ -47,7 +47,7 @@ The module governs the creation of the new tab. In `webpack.config.js`, add the following declarations: ```js -const ibexaConfigManager = require('./ibexa.webpack.config.manager.js'); +const ibexaConfigManager = require('@ibexa/frontend-config/webpack-config/manager'); const getIbexaConfig = require('@ibexa/frontend-config/webpack-config/ibexa'); const ibexaConfig = getIbexaConfig(); ``` diff --git a/docs/update_and_migration/from_4.6/update_to_5.0.md b/docs/update_and_migration/from_4.6/update_to_5.0.md index d462a35f92..8b6b8a0cd2 100644 --- a/docs/update_and_migration/from_4.6/update_to_5.0.md +++ b/docs/update_and_migration/from_4.6/update_to_5.0.md @@ -597,9 +597,10 @@ yarn --cwd ./vendor/ibexa/rector/js transform To add your custimizations back into to the new webpack.config.js, take care of the following change. Contrary to 4.6, in 5.0, `ibexaConfig` isn't available by default in `webpack.config.js`. You have to require then export it. +The `./ibexa.webpack.config.manager.js` file at project root doesn't exist anymore, you have to require it through its alias path `@ibexa/frontend-config/webpack-config/manager` to get `ibexaConfigManager`. ```js hl_lines="2 3 10" -const ibexaConfigManager = require('./ibexa.webpack.config.manager.js'); +const ibexaConfigManager = require('@ibexa/frontend-config/webpack-config/manager'); const getIbexaConfig = require('@ibexa/frontend-config/webpack-config/ibexa'); const ibexaConfig = getIbexaConfig(); From e6c5aa012bea4592422e9baba365412c9a2cc24f Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 13 Aug 2026 14:15:02 +0200 Subject: [PATCH 21/24] subitems_list.md: Update ibexaConfigManager & ibexaConfig --- docs/administration/back_office/subitems_list.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/administration/back_office/subitems_list.md b/docs/administration/back_office/subitems_list.md index 026ab74056..d78353c66f 100644 --- a/docs/administration/back_office/subitems_list.md +++ b/docs/administration/back_office/subitems_list.md @@ -54,9 +54,11 @@ And include it into the back office using Webpack Encore, together with your cus See [configuring assets from main project files](importing_assets_from_bundle.md#configuration-from-main-project-files) to learn more about this mechanism. ``` js -const ibexaConfigManager = require('./ibexa.webpack.config.manager.js'); +const ibexaConfigManager = require('@ibexa/frontend-config/webpack-config/manager'); +const getIbexaConfig = require('@ibexa/frontend-config/webpack-config/ibexa'); +const ibexaConfig = getIbexaConfig(); -//... +//… ibexaConfigManager.add({ ibexaConfig, @@ -73,6 +75,8 @@ ibexaConfigManager.add({ path.resolve(__dirname, './assets/scss/timeline.view.scss'), ], }); + +module.exports = [ibexaConfig, ...customConfigs, projectConfig]; ``` Complete the task by running `composer run post-install-cmd`. From 66a12623c9c43e40500fc9f6712b57309373fc9a Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 13 Aug 2026 14:24:39 +0200 Subject: [PATCH 22/24] update_to_5.0.md: Format --- docs/update_and_migration/from_4.6/update_to_5.0.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/update_and_migration/from_4.6/update_to_5.0.md b/docs/update_and_migration/from_4.6/update_to_5.0.md index 8b6b8a0cd2..a86c781818 100644 --- a/docs/update_and_migration/from_4.6/update_to_5.0.md +++ b/docs/update_and_migration/from_4.6/update_to_5.0.md @@ -594,10 +594,10 @@ yarn --cwd ./vendor/ibexa/rector/js transform ##### `webpack.config.js` usage update -To add your custimizations back into to the new webpack.config.js, take care of the following change. +To add your custimizations back into to the new webpack.config.js, take care of the following changes. -Contrary to 4.6, in 5.0, `ibexaConfig` isn't available by default in `webpack.config.js`. You have to require then export it. -The `./ibexa.webpack.config.manager.js` file at project root doesn't exist anymore, you have to require it through its alias path `@ibexa/frontend-config/webpack-config/manager` to get `ibexaConfigManager`. +- Contrary to 4.6, in 5.0, `ibexaConfig` isn't available by default in `webpack.config.js`. You have to require then export it. +- The `./ibexa.webpack.config.manager.js` file at project root doesn't exist anymore, you have to require it through its alias path `@ibexa/frontend-config/webpack-config/manager` to get `ibexaConfigManager`. ```js hl_lines="2 3 10" const ibexaConfigManager = require('@ibexa/frontend-config/webpack-config/manager'); From d22d3709f20c2d2a58a343131212d944c8303459 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 13 Aug 2026 14:30:42 +0200 Subject: [PATCH 23/24] update_to_5.0.md: Format --- docs/update_and_migration/from_4.6/update_to_5.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/update_and_migration/from_4.6/update_to_5.0.md b/docs/update_and_migration/from_4.6/update_to_5.0.md index a86c781818..903e061bdd 100644 --- a/docs/update_and_migration/from_4.6/update_to_5.0.md +++ b/docs/update_and_migration/from_4.6/update_to_5.0.md @@ -599,7 +599,7 @@ To add your custimizations back into to the new webpack.config.js, take care of - Contrary to 4.6, in 5.0, `ibexaConfig` isn't available by default in `webpack.config.js`. You have to require then export it. - The `./ibexa.webpack.config.manager.js` file at project root doesn't exist anymore, you have to require it through its alias path `@ibexa/frontend-config/webpack-config/manager` to get `ibexaConfigManager`. -```js hl_lines="2 3 10" +```js hl_lines="1-3 10" const ibexaConfigManager = require('@ibexa/frontend-config/webpack-config/manager'); const getIbexaConfig = require('@ibexa/frontend-config/webpack-config/ibexa'); const ibexaConfig = getIbexaConfig(); From 7e71dda4e9e527cf0158d6a35b47d88f140fd6ba Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 13 Aug 2026 15:08:58 +0200 Subject: [PATCH 24/24] update_to_5.0.md: Fix typo --- docs/update_and_migration/from_4.6/update_to_5.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/update_and_migration/from_4.6/update_to_5.0.md b/docs/update_and_migration/from_4.6/update_to_5.0.md index 903e061bdd..eb1d78bcf8 100644 --- a/docs/update_and_migration/from_4.6/update_to_5.0.md +++ b/docs/update_and_migration/from_4.6/update_to_5.0.md @@ -594,7 +594,7 @@ yarn --cwd ./vendor/ibexa/rector/js transform ##### `webpack.config.js` usage update -To add your custimizations back into to the new webpack.config.js, take care of the following changes. +To add your customizations back into to the new webpack.config.js, take care of the following changes. - Contrary to 4.6, in 5.0, `ibexaConfig` isn't available by default in `webpack.config.js`. You have to require then export it. - The `./ibexa.webpack.config.manager.js` file at project root doesn't exist anymore, you have to require it through its alias path `@ibexa/frontend-config/webpack-config/manager` to get `ibexaConfigManager`.