The API surface is intentionally minimal - the goal is to reuse as much as possible while being as flexible as possible.
-## Why isn't `@vue/compiler-dom` a peerDependency?
-
-Since this package is more often used as a low-level utility, it is usually a transitive dependency in an actual Vue project. It is therefore the responsibility of the higher-level package (e.g. `vue-loader`) to inject `@vue/compiler-dom` via options when calling the `compileTemplate` methods.
-
-Not listing it as a peer dependency also allows tooling authors to use a custom template compiler (built on top of `@vue/compiler-core`) instead of `@vue/compiler-dom`, without having to include it just to fulfill the peer dep requirement.
-
## API
TODO
// TODO need more thorough tests here
import { compileTemplate } from '../src/compileTemplate'
-import { compile } from '@vue/compiler-dom'
import { parse, SFCTemplateBlock } from '../src/parse'
-const compiler = { compile }
-
test('should work', () => {
const source = `<div><p>{{ render }}</p></div>`
- const result = compileTemplate({ filename: 'example.vue', source, compiler })
+ const result = compileTemplate({ filename: 'example.vue', source })
expect(result.errors.length).toBe(0)
expect(result.source).toBe(source)
const result = compileTemplate({
filename: 'example.vue',
source: template.content,
- preprocessLang: template.lang,
- compiler
+ preprocessLang: template.lang
})
expect(result.errors.length).toBe(0)
const result = compileTemplate({
filename: 'example.vue',
- compiler,
source: template.content,
preprocessLang: template.lang
})
"homepage": "https://github.com/vuejs/vue/tree/dev/packages/compiler-sfc#readme",
"dependencies": {
"@vue/compiler-core": "3.0.0-alpha.0",
+ "@vue/compiler-dom": "3.0.0-alpha.0",
"consolidate": "^0.15.1",
"hash-sum": "^2.0.0",
"lru-cache": "^5.1.1",
export interface TemplateCompileOptions {
source: string
filename: string
- compiler: TemplateCompiler
+ compiler?: TemplateCompiler
compilerOptions?: CompilerOptions
preprocessLang?: string
preprocessOptions?: any
function doCompileTemplate({
filename,
source,
- compiler,
+ compiler = require('@vue/compiler-dom'),
compilerOptions = {},
transformAssetUrls
}: TemplateCompileOptions): TemplateCompileResults {