Commit bffacd5e authored by Evan You's avatar Evan You

fix: prioritize .vue rules in plugin (fix #1246)

parent 4359bf38
...@@ -9,17 +9,23 @@ module.exports = class VueLoaderPlugin { ...@@ -9,17 +9,23 @@ module.exports = class VueLoaderPlugin {
// use webpack's RuleSet utility to normalize user rules // use webpack's RuleSet utility to normalize user rules
const rawNormalizedRules = new RuleSet(rawRules).rules const rawNormalizedRules = new RuleSet(rawRules).rules
// find the rule that applies to vue files const createMatcher = fakeFile => (rule, i) => {
const vueRuleIndex = rawRules.findIndex((rule, i) => {
// #1201 we need to skip the `include` check when locating the vue rule // #1201 we need to skip the `include` check when locating the vue rule
const clone = Object.assign({}, rule) const clone = Object.assign({}, rule)
delete clone.include delete clone.include
const normalized = RuleSet.normalizeRule(clone, {}, '') const normalized = RuleSet.normalizeRule(clone, {}, '')
return !rule.enforce && normalized.resource && ( return (
normalized.resource(`foo.vue`) || !rule.enforce &&
normalized.resource(`foo.vue.html`) normalized.resource &&
normalized.resource(fakeFile)
) )
}) }
// find the rule that applies to vue files
let vueRuleIndex = rawRules.findIndex(createMatcher(`foo.vue`))
if (vueRuleIndex < 0) {
vueRuleIndex = rawRules.findIndex(createMatcher(`foo.vue.html`))
}
const vueRule = rawRules[vueRuleIndex] const vueRule = rawRules[vueRuleIndex]
if (!vueRule) { if (!vueRule) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment