diff --git a/lib/utils/addEntries.js b/lib/utils/addEntries.js index 7eaac33003..7fdccf47e6 100644 --- a/lib/utils/addEntries.js +++ b/lib/utils/addEntries.js @@ -117,15 +117,24 @@ function addEntries(config, options, server) { // eslint-disable-next-line no-shadow [].concat(config).forEach((config) => { + // In webpack v5 target can be a string, an array of strings, null, or undefined + /** @type {Array} */ + const targets = Array.isArray(config.target) + ? config.target + : [config.target]; + /** @type {Boolean} */ - const webTarget = [ - 'web', - 'webworker', - 'electron-renderer', - 'node-webkit', - undefined, // eslint-disable-line - null, - ].includes(config.target); + const webTarget = targets.some((target) => { + return [ + 'web', + 'webworker', + 'electron-renderer', + 'node-webkit', + undefined, // eslint-disable-line + null, + ].includes(target); + }); + /** @type {Entry} */ const additionalEntries = checkInject( options.injectClient, diff --git a/test/server/utils/addEntries.test.js b/test/server/utils/addEntries.test.js index a5a375da2a..70b951154d 100644 --- a/test/server/utils/addEntries.test.js +++ b/test/server/utils/addEntries.test.js @@ -307,9 +307,11 @@ describe('addEntries util', () => { Object.assign({}, config), Object.assign({ target: 'web' }, config), Object.assign({ target: 'webworker' }, config), + Object.assign({ target: ['web', 'webworker'] }, config), + Object.assign({ target: ['web', 'es5'] }, config), Object.assign({ target: 'electron-renderer' }, config), Object.assign({ target: 'node-webkit' }, config), - Object.assign({ target: 'node' }, config) /* index:5 */, + Object.assign({ target: 'node' }, config) /* index:7 */, ]; const devServerOptions = {}; @@ -318,7 +320,7 @@ describe('addEntries util', () => { // eslint-disable-next-line no-shadow webpackOptions.forEach((webpackOptions, index) => { - const expectInline = index !== 5; /* all but the node target */ + const expectInline = index !== 7; /* all but the node target */ expect(webpackOptions.entry.length).toEqual(expectInline ? 2 : 1);