From e7b2b1181ec2e67db87ba0895c9fb6c5608d5442 Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Tue, 23 Jun 2020 16:12:46 +0800 Subject: [PATCH] fix: skip matching rule with 'enforce' backports #1680 --- lib/plugin-webpack5.js | 4 ++++ test/advanced.spec.js | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/lib/plugin-webpack5.js b/lib/plugin-webpack5.js index c24fb58fc..431fdf06f 100644 --- a/lib/plugin-webpack5.js +++ b/lib/plugin-webpack5.js @@ -38,6 +38,10 @@ class VueLoaderPlugin { let vueRules = [] for (const rawRule of rules) { + // skip rules with 'enforce'. eg. rule for eslint-loader + if (rawRule.enforce) { + continue + } // skip the `include` check when locating the vue rule const clonedRawRule = Object.assign({}, rawRule) delete clonedRawRule.include diff --git a/test/advanced.spec.js b/test/advanced.spec.js index 5d57e138c..788408e83 100644 --- a/test/advanced.spec.js +++ b/test/advanced.spec.js @@ -241,6 +241,20 @@ test('support rules with oneOf', async () => { }) }) +test('should work with eslint loader', async () => { + // TODO: + return new Promise(resolve => { + bundle({ + entry: 'basic.vue', + modify: config => { + config.module.rules.unshift({ + test: /\.vue$/, loader: 'vue-loader', enforce: 'pre' + }) + } + }, () => resolve()) + }) +}) + // TODO // test('multiple rule definitions', done => { // mockBundleAndRun({