diff --git a/packages/compiler-sfc/README.md b/packages/compiler-sfc/README.md index 26e61e6d..4cffa17f 100644 --- a/packages/compiler-sfc/README.md +++ b/packages/compiler-sfc/README.md @@ -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. -## 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 diff --git a/packages/compiler-sfc/__tests__/compileTemplate.spec.ts b/packages/compiler-sfc/__tests__/compileTemplate.spec.ts index ebf6a6e4..0ece6334 100644 --- a/packages/compiler-sfc/__tests__/compileTemplate.spec.ts +++ b/packages/compiler-sfc/__tests__/compileTemplate.spec.ts @@ -1,15 +1,12 @@ // 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 = `

{{ render }}

` - 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) @@ -33,8 +30,7 @@ body const result = compileTemplate({ filename: 'example.vue', source: template.content, - preprocessLang: template.lang, - compiler + preprocessLang: template.lang }) expect(result.errors.length).toBe(0) @@ -48,7 +44,6 @@ test('warn missing preprocessor', () => { const result = compileTemplate({ filename: 'example.vue', - compiler, source: template.content, preprocessLang: template.lang }) diff --git a/packages/compiler-sfc/package.json b/packages/compiler-sfc/package.json index a427dd2e..aa16a9ca 100644 --- a/packages/compiler-sfc/package.json +++ b/packages/compiler-sfc/package.json @@ -28,6 +28,7 @@ "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", diff --git a/packages/compiler-sfc/src/compileTemplate.ts b/packages/compiler-sfc/src/compileTemplate.ts index 4e7a1f81..47369576 100644 --- a/packages/compiler-sfc/src/compileTemplate.ts +++ b/packages/compiler-sfc/src/compileTemplate.ts @@ -29,7 +29,7 @@ export interface TemplateCompiler { export interface TemplateCompileOptions { source: string filename: string - compiler: TemplateCompiler + compiler?: TemplateCompiler compilerOptions?: CompilerOptions preprocessLang?: string preprocessOptions?: any @@ -92,7 +92,7 @@ export function compileTemplate( function doCompileTemplate({ filename, source, - compiler, + compiler = require('@vue/compiler-dom'), compilerOptions = {}, transformAssetUrls }: TemplateCompileOptions): TemplateCompileResults {