From 6dba15255e9d29ff13c08d9ce5201daa2f4e59c1 Mon Sep 17 00:00:00 2001 From: Kael Date: Fri, 27 Aug 2021 20:20:49 +1000 Subject: [PATCH] fix: clone rules before adding oneOf fixes #186 --- dev5/webpack.config.js | 2 +- lib/getVueRules.js | 9 +++++---- lib/plugin.js | 8 +++++++- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/dev5/webpack.config.js b/dev5/webpack.config.js index 39a8e4c..952f701 100644 --- a/dev5/webpack.config.js +++ b/dev5/webpack.config.js @@ -88,7 +88,7 @@ module.exports = { } if (isProd) { - module.exports.devtool = '#source-map' + module.exports.devtool = 'source-map' // http://vue-loader.vuejs.org/en/workflow/production.html module.exports.plugins = (module.exports.plugins || []).concat([ new webpack.DefinePlugin({ diff --git a/lib/getVueRules.js b/lib/getVueRules.js index a6b1469..ea952eb 100644 --- a/lib/getVueRules.js +++ b/lib/getVueRules.js @@ -15,9 +15,10 @@ module.exports = { const rules = compiler.options.module.rules // Naive approach without RuleSet or RuleSetCompiler - rules.map((rule, i) => rule.use && rule.use.find && rule.use.find(isVueLoader) ? i : null).filter(v => v != null) - - // find the rules that apply to vue files - return rules.filter(rule => rule.use && rule.use.find && rule.use.find(isVueLoader)) + return rules.map((rule, index) => ( + rule.use && rule.use.find && rule.use.find(isVueLoader) + ? { rule: { ...rule }, index } + : null + )).filter(v => v != null) } } diff --git a/lib/plugin.js b/lib/plugin.js index 8a46884..2dc69e6 100644 --- a/lib/plugin.js +++ b/lib/plugin.js @@ -20,6 +20,12 @@ class VuetifyLoaderPlugin { vueRules.forEach(this.updateVueRule.bind(this)) + const rules = [...compiler.options.module.rules] + vueRules.forEach(({ rule, index }) => { + rules[index] = rule + }) + compiler.options.module.rules = rules + if (this.options.progressiveImages) { const options = typeof this.options.progressiveImages === 'boolean' ? undefined @@ -52,7 +58,7 @@ class VuetifyLoaderPlugin { } } - updateVueRule (rule) { + updateVueRule ({ rule }) { if (this.options.progressiveImages) { const vueLoaderOptions = rule.use.find(isVueLoader).options vueLoaderOptions.compilerOptions = vueLoaderOptions.compilerOptions || {}