@@ -144,13 +144,14 @@ class VueLoaderPlugin {
144
144
const { is27 } = resolveCompiler ( compiler . options . context )
145
145
let jsRulesForRenderFn = [ ]
146
146
if ( is27 ) {
147
+ const skipThreadLoader = true
147
148
jsRulesForRenderFn = rules
148
149
. filter (
149
150
( r ) =>
150
151
r !== rawVueRule &&
151
152
( match ( r , 'test.js' ) . length > 0 || match ( r , 'test.ts' ) . length > 0 )
152
153
)
153
- . map ( ( rawRule ) => cloneRule ( rawRule , refs , jsRuleCheck , jsRuleResource ) )
154
+ . map ( ( rawRule ) => cloneRule ( rawRule , refs , jsRuleCheck , jsRuleResource , skipThreadLoader ) )
154
155
}
155
156
156
157
// global pitcher (responsible for injecting template compiler loader & CSS
@@ -216,7 +217,7 @@ const jsRuleResource = (query, resource) =>
216
217
217
218
let uid = 0
218
219
219
- function cloneRule ( rawRule , refs , ruleCheck , ruleResource ) {
220
+ function cloneRule ( rawRule , refs , ruleCheck , ruleResource , skipThreadLoader ) {
220
221
const compiledRule = ruleSetCompiler . compileRule (
221
222
`clonedRuleSet-${ ++ uid } ` ,
222
223
rawRule ,
@@ -231,7 +232,19 @@ function cloneRule(rawRule, refs, ruleCheck, ruleResource) {
231
232
// fix conflict with config.loader and config.options when using config.use
232
233
delete rawRule . loader
233
234
delete rawRule . options
234
- rawRule . use = ruleUse
235
+
236
+ // Filter out `thread-loader` from the `use` array.
237
+ // Mitigate https://github.com./vuejs/vue/issues/12828
238
+ // Note this won't work if the `use` filed is a function
239
+ if ( skipThreadLoader && Array . isArray ( ruleUse ) ) {
240
+ const isThreadLoader = ( loader ) => loader === 'thread-loader' || / \/ n o d e _ m o d u l e s \/ t h r e a d - l o a d e r \/ / . test ( loader )
241
+ rawRule . use = ruleUse . filter ( useEntry => {
242
+ const loader = typeof useEntry === 'string' ? useEntry : useEntry . loader
243
+ return ! isThreadLoader ( loader )
244
+ } )
245
+ } else {
246
+ rawRule . use = ruleUse
247
+ }
235
248
}
236
249
237
250
let currentResource
0 commit comments