diff --git a/src/customizers/__snapshots__/webpack.test.js.snap b/src/customizers/__snapshots__/webpack.test.js.snap index c4c22c0..9142ffd 100644 --- a/src/customizers/__snapshots__/webpack.test.js.snap +++ b/src/customizers/__snapshots__/webpack.test.js.snap @@ -198,6 +198,14 @@ Object { } `; +exports[`removeWebpackPlugin removes plugin with provided name from plugins list 1`] = ` +Object { + "plugins": Array [ + PluginToStay {}, + ], +} +`; + exports[`setWebpackOptimizationSplitChunks sets the customized optimization.splitChunks for webpack 1`] = ` Object { "optimization": Object { diff --git a/src/customizers/webpack.js b/src/customizers/webpack.js index 1002df4..84b1880 100644 --- a/src/customizers/webpack.js +++ b/src/customizers/webpack.js @@ -59,6 +59,13 @@ export const addWebpackPlugin = plugin => config => { return config; }; +export const removeWebpackPlugin = pluginName => config => { + config.plugins = config.plugins.filter( + p => p.constructor.name !== pluginName + ); + return config; +}; + export const adjustWorkbox = adjust => config => { config.plugins.forEach(p => { if (p.constructor.name === "GenerateSW") { diff --git a/src/customizers/webpack.test.js b/src/customizers/webpack.test.js index e67bb87..a360041 100644 --- a/src/customizers/webpack.test.js +++ b/src/customizers/webpack.test.js @@ -3,6 +3,7 @@ import { addWebpackAlias, addWebpackResolve, addWebpackPlugin, + removeWebpackPlugin, disableEsLint, useEslintRc, enableEslintTypescript, @@ -81,6 +82,21 @@ test("addWebpackPlugin adds the provided plugin to the config plugins list", () expect(actual).toMatchSnapshot(); }); +test("removeWebpackPlugin removes plugin with provided name from plugins list", () => { + class TestPlugin { + constructor(){} + } + class PluginToStay { + constructor(){} + } + const pluginToRemove = new TestPlugin(); + const pluginToStay = new PluginToStay(); + const config = { plugins: [pluginToStay, pluginToRemove] }; + const actual = removeWebpackPlugin("TestPlugin")(config); + + expect(actual).toMatchSnapshot(); +}); + describe("eslint", () => { test("disableEsLint filters out the eslint rules from the config rules list", () => { const inputConfig = {