Skip to content

Commit 9fb6ec3

Browse files
committed
fix: don't rely on plugin order
laravel mix always puts VueLoaderPlugin after any user-defined plugins, so ident isn't set yet fixes #49
1 parent ebb55ca commit 9fb6ec3

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

lib/plugin.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
const RuleSet = require('webpack/lib/RuleSet')
22
const progressiveLoaderModule = require('../progressive-loader/module')
3+
let vueLoaderPath
4+
try {
5+
vueLoaderPath = require.resolve('vue-loader')
6+
} catch (err) {}
7+
8+
function isVueLoader (use) {
9+
return use.ident === 'vue-loader-options' ||
10+
use.loader === 'vue-loader' ||
11+
(vueLoaderPath && use.loader === vueLoaderPath)
12+
}
313

414
class VuetifyLoaderPlugin {
515
constructor (options) {
@@ -12,7 +22,7 @@ class VuetifyLoaderPlugin {
1222
const { rules } = new RuleSet(rawRules)
1323

1424
// find the rule that applies to vue files
15-
const vueRuleIndex = rules.findIndex(rule => rule.use && rule.use.find(u => u.ident === 'vue-loader-options'))
25+
const vueRuleIndex = rules.findIndex(rule => rule.use && rule.use.find(isVueLoader))
1626
const vueRule = rules[vueRuleIndex]
1727

1828
if (!vueRule) {
@@ -31,7 +41,7 @@ class VuetifyLoaderPlugin {
3141
})
3242

3343
if (this.options.progressiveImages) {
34-
const vueLoaderOptions = vueRule.use.find(use => use.ident === 'vue-loader-options').options
44+
const vueLoaderOptions = vueRule.use.find(isVueLoader).options
3545
vueLoaderOptions.compilerOptions = vueLoaderOptions.compilerOptions || {}
3646
vueLoaderOptions.compilerOptions.modules = vueLoaderOptions.compilerOptions.modules || []
3747
vueLoaderOptions.compilerOptions.modules.push(progressiveLoaderModule)

0 commit comments

Comments
 (0)