feat(compiler-sfc): use @vue/compiler-dom by default

This commit is contained in:
Evan You 2019-12-10 22:23:55 -05:00
parent 136ab753b3
commit 818bf17cb7
4 changed files with 5 additions and 15 deletions

View File

@ -6,12 +6,6 @@ This package contains lower level utilities that you can use if you are writing
The API surface is intentionally minimal - the goal is to reuse as much as possible while being as flexible as possible. 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 ## API
TODO TODO

View File

@ -1,15 +1,12 @@
// TODO need more thorough tests here // TODO need more thorough tests here
import { compileTemplate } from '../src/compileTemplate' import { compileTemplate } from '../src/compileTemplate'
import { compile } from '@vue/compiler-dom'
import { parse, SFCTemplateBlock } from '../src/parse' import { parse, SFCTemplateBlock } from '../src/parse'
const compiler = { compile }
test('should work', () => { test('should work', () => {
const source = `<div><p>{{ render }}</p></div>` 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.errors.length).toBe(0)
expect(result.source).toBe(source) expect(result.source).toBe(source)
@ -33,8 +30,7 @@ body
const result = compileTemplate({ const result = compileTemplate({
filename: 'example.vue', filename: 'example.vue',
source: template.content, source: template.content,
preprocessLang: template.lang, preprocessLang: template.lang
compiler
}) })
expect(result.errors.length).toBe(0) expect(result.errors.length).toBe(0)
@ -48,7 +44,6 @@ test('warn missing preprocessor', () => {
const result = compileTemplate({ const result = compileTemplate({
filename: 'example.vue', filename: 'example.vue',
compiler,
source: template.content, source: template.content,
preprocessLang: template.lang preprocessLang: template.lang
}) })

View File

@ -28,6 +28,7 @@
"homepage": "https://github.com/vuejs/vue/tree/dev/packages/compiler-sfc#readme", "homepage": "https://github.com/vuejs/vue/tree/dev/packages/compiler-sfc#readme",
"dependencies": { "dependencies": {
"@vue/compiler-core": "3.0.0-alpha.0", "@vue/compiler-core": "3.0.0-alpha.0",
"@vue/compiler-dom": "3.0.0-alpha.0",
"consolidate": "^0.15.1", "consolidate": "^0.15.1",
"hash-sum": "^2.0.0", "hash-sum": "^2.0.0",
"lru-cache": "^5.1.1", "lru-cache": "^5.1.1",

View File

@ -29,7 +29,7 @@ export interface TemplateCompiler {
export interface TemplateCompileOptions { export interface TemplateCompileOptions {
source: string source: string
filename: string filename: string
compiler: TemplateCompiler compiler?: TemplateCompiler
compilerOptions?: CompilerOptions compilerOptions?: CompilerOptions
preprocessLang?: string preprocessLang?: string
preprocessOptions?: any preprocessOptions?: any
@ -92,7 +92,7 @@ export function compileTemplate(
function doCompileTemplate({ function doCompileTemplate({
filename, filename,
source, source,
compiler, compiler = require('@vue/compiler-dom'),
compilerOptions = {}, compilerOptions = {},
transformAssetUrls transformAssetUrls
}: TemplateCompileOptions): TemplateCompileResults { }: TemplateCompileOptions): TemplateCompileResults {