From e181da196b9f557219fbd165dbcfc999bcabb3de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jib=C3=A9=20Barth?= Date: Sun, 15 Feb 2026 12:33:21 +0100 Subject: [PATCH] [Stimulus Bridge] Entrypoint: Allow to import aliases --- fixtures/stimulus/assets/controllers.json | 4 +++- fixtures/stimulus/mock-module/dist/entrypoint.js | 1 + fixtures/stimulus/mock-module/package.json | 3 +++ lib/WebpackConfig.js | 6 ++++++ test/functional.js | 4 +++- 5 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 fixtures/stimulus/mock-module/dist/entrypoint.js diff --git a/fixtures/stimulus/assets/controllers.json b/fixtures/stimulus/assets/controllers.json index c04379859..4de113a31 100644 --- a/fixtures/stimulus/assets/controllers.json +++ b/fixtures/stimulus/assets/controllers.json @@ -10,5 +10,7 @@ } } }, - "entrypoints": [] + "entrypoints": { + "@symfony/mock-module/entrypoint": "@symfony/mock-module/dist/entrypoint.js" + } } diff --git a/fixtures/stimulus/mock-module/dist/entrypoint.js b/fixtures/stimulus/mock-module/dist/entrypoint.js new file mode 100644 index 000000000..6bd6fcc75 --- /dev/null +++ b/fixtures/stimulus/mock-module/dist/entrypoint.js @@ -0,0 +1 @@ +console.log('Hello from the mock module entrypoint!'); diff --git a/fixtures/stimulus/mock-module/package.json b/fixtures/stimulus/mock-module/package.json index c0d70e1c7..a66993a2d 100644 --- a/fixtures/stimulus/mock-module/package.json +++ b/fixtures/stimulus/mock-module/package.json @@ -12,6 +12,9 @@ "@symfony/mock-module/dist/style.css": true } } + }, + "entrypoints": { + "@symfony/mock-module/entrypoint": "@symfony/mock-module/dist/entrypoint.js" } } } diff --git a/lib/WebpackConfig.js b/lib/WebpackConfig.js index f90821fe1..f32e99288 100644 --- a/lib/WebpackConfig.js +++ b/lib/WebpackConfig.js @@ -764,6 +764,12 @@ class WebpackConfig { const rootDir = path.dirname(path.resolve(controllerJsonPath)); for (let name in controllersData.entrypoints) { + // Imported entrypoint (e.g. from node_modules) should be used as-is + if (controllersData.entrypoints[name].startsWith('@')) { + this.addEntry(name, controllersData.entrypoints[name]); + continue; + } + this.addEntry(name, rootDir + '/' + controllersData.entrypoints[name]); } diff --git a/test/functional.js b/test/functional.js index c5b19f578..a587ac220 100644 --- a/test/functional.js +++ b/test/functional.js @@ -2024,7 +2024,7 @@ module.exports = { const appDir = testSetup.createTestAppDir(); const version = packageHelper.getPackageVersion('@symfony/stimulus-bridge'); - if (!semver.satisfies(version, '^3.0.0')) { + if (!semver.satisfies(version, '>3.0.0')) { // we support the old version, but it's not tested this.skip(); @@ -2045,12 +2045,14 @@ module.exports = { 'node_modules_symfony_mock-module_dist_controller_js.js', 'entrypoints.json', 'runtime.js', + '@symfony/mock-module/entrypoint.js' ]); // test controllers and style are shipped webpackAssert.assertOutputFileContains('main.js', 'app-controller'); webpackAssert.assertOutputFileContains('node_modules_symfony_mock-module_dist_controller_js.js', 'mock-module-controller'); webpackAssert.assertOutputFileContains('main.css', 'body {}'); + webpackAssert.assertOutputFileContains('entrypoints.json', '@symfony/mock-module/entrypoint'); done(); });