From 7b95a1d700217c0d41f892cab42f4c69e98bd3de Mon Sep 17 00:00:00 2001 From: Hugo Alliaume Date: Thu, 3 Dec 2020 13:05:51 +0100 Subject: [PATCH] fix(stimulus): don't require an optional dependency if it's not used --- lib/features.js | 8 ++++++++ lib/plugins/stimulus-bridge.js | 6 +++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/features.js b/lib/features.js index de02f13a..6ffbb172 100644 --- a/lib/features.js +++ b/lib/features.js @@ -147,6 +147,14 @@ const features = { { name: 'handlebars-loader', enforce_version: true } ], description: 'load Handlebars files' + }, + stimulus: { + method: 'enableStimulusBridge()', + packages: [ + { name: '@symfony/stimulus-bridge' }, + { name: 'stimulus' } + ], + description: 'enable Stimulus bridge' } }; diff --git a/lib/plugins/stimulus-bridge.js b/lib/plugins/stimulus-bridge.js index 9800625a..3eeaa5fe 100644 --- a/lib/plugins/stimulus-bridge.js +++ b/lib/plugins/stimulus-bridge.js @@ -10,7 +10,7 @@ 'use strict'; const WebpackConfig = require('../WebpackConfig'); //eslint-disable-line no-unused-vars -const createPlugin = require('@symfony/stimulus-bridge/webpack-helper'); +const loaderFeatures = require('../features'); const fs = require('fs'); /** @@ -20,6 +20,10 @@ const fs = require('fs'); */ module.exports = function(plugins, webpackConfig) { if (webpackConfig.useStimulusBridge) { + loaderFeatures.ensurePackagesExistAndAreCorrectVersion('stimulus'); + + const createPlugin = require('@symfony/stimulus-bridge/webpack-helper'); + plugins.push({ plugin: createPlugin(JSON.parse(fs.readFileSync(webpackConfig.stimulusOptions.controllersJsonPath))), });