Skip to content

Commit 064abd4

Browse files
authored
feat: allow compiler option to be a path to the compiler module (#1711)
1 parent cc6d6fa commit 064abd4

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

src/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export { VueLoaderPlugin }
3131

3232
export interface VueLoaderOptions {
3333
transformAssetUrls?: SFCTemplateCompileOptions['transformAssetUrls']
34-
compiler?: TemplateCompiler
34+
compiler?: TemplateCompiler | string
3535
compilerOptions?: CompilerOptions
3636
hotReload?: boolean
3737
exposeFilename?: boolean

src/templateLoader.ts

+9-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import qs from 'querystring'
33
import loaderUtils from 'loader-utils'
44
import { VueLoaderOptions } from './'
55
import { formatError } from './formatError'
6-
import { compileTemplate } from '@vue/compiler-sfc'
6+
import { compileTemplate, TemplateCompiler } from '@vue/compiler-sfc'
77

88
// Loader that compiles raw template into JavaScript functions.
99
// This is injected by the global pitcher (../pitch) for template
@@ -23,11 +23,18 @@ const TemplateLoader: webpack.loader.Loader = function(source, inMap) {
2323
const query = qs.parse(loaderContext.resourceQuery.slice(1))
2424
const scopeId = query.scoped ? `data-v-${query.id}` : null
2525

26+
let compiler: TemplateCompiler | undefined
27+
if (typeof options.compiler === 'string') {
28+
compiler = require(options.compiler)
29+
} else {
30+
compiler = options.compiler
31+
}
32+
2633
const compiled = compileTemplate({
2734
source,
2835
inMap,
2936
filename: loaderContext.resourcePath,
30-
compiler: options.compiler,
37+
compiler,
3138
compilerOptions: {
3239
...options.compilerOptions,
3340
scopeId

0 commit comments

Comments
 (0)