refactor: adjust sfc compiler options

This commit is contained in:
Evan You 2019-12-10 17:41:56 -05:00
parent 95b2cb6fd2
commit 3e3188fa9f
3 changed files with 17 additions and 13 deletions

View File

@ -27,7 +27,7 @@ body
p Cool Pug example! p Cool Pug example!
</template> </template>
`, `,
{ filename: 'example.vue', needMap: true } { filename: 'example.vue', sourceMap: true }
).template as SFCTemplateBlock ).template as SFCTemplateBlock
const result = compileTemplate({ const result = compileTemplate({
@ -43,7 +43,7 @@ body
test('warn missing preprocessor', () => { test('warn missing preprocessor', () => {
const template = parse(`<template lang="unknownLang">\n</template>\n`, { const template = parse(`<template lang="unknownLang">\n</template>\n`, {
filename: 'example.vue', filename: 'example.vue',
needMap: true sourceMap: true
}).template as SFCTemplateBlock }).template as SFCTemplateBlock
const result = compileTemplate({ const result = compileTemplate({

View File

@ -98,21 +98,25 @@ function doCompileTemplate({
}: TemplateCompileOptions): TemplateCompileResults { }: TemplateCompileOptions): TemplateCompileResults {
const errors: CompilerError[] = [] const errors: CompilerError[] = []
const nodeTransforms: NodeTransform[] = [transformSrcset] let nodeTransforms: NodeTransform[] = []
if (isObject(transformAssetUrls)) { if (isObject(transformAssetUrls)) {
nodeTransforms.push(createAssetUrlTransformWithOptions(transformAssetUrls)) nodeTransforms = [
createAssetUrlTransformWithOptions(transformAssetUrls),
transformSrcset
]
} else if (transformAssetUrls !== false) { } else if (transformAssetUrls !== false) {
nodeTransforms.push(transformAssetUrl) nodeTransforms = [transformAssetUrl, transformSrcset]
} }
const { code, map } = compiler.compile(source, { const { code, map } = compiler.compile(source, {
...compilerOptions, mode: 'module',
filename, prefixIdentifiers: true,
mode: 'module', // implies prefixIdentifiers: true
hoistStatic: true, hoistStatic: true,
cacheHandlers: true, cacheHandlers: true,
...compilerOptions,
nodeTransforms: nodeTransforms.concat(compilerOptions.nodeTransforms || []),
filename,
sourceMap: true, sourceMap: true,
nodeTransforms,
onError: e => errors.push(e) onError: e => errors.push(e)
}) })
return { code, source, errors, tips: [], map } return { code, source, errors, tips: [], map }

View File

@ -11,8 +11,8 @@ import LRUCache from 'lru-cache'
import { generateCodeFrame } from '@vue/shared' import { generateCodeFrame } from '@vue/shared'
export interface SFCParseOptions { export interface SFCParseOptions {
needMap?: boolean
filename?: string filename?: string
sourceMap?: boolean
sourceRoot?: string sourceRoot?: string
pad?: boolean | 'line' | 'space' pad?: boolean | 'line' | 'space'
} }
@ -55,13 +55,13 @@ const sourceToSFC = new LRUCache<string, SFCDescriptor>(SFC_CACHE_MAX_SIZE)
export function parse( export function parse(
source: string, source: string,
{ {
needMap = true, sourceMap = true,
filename = 'component.vue', filename = 'component.vue',
sourceRoot = '', sourceRoot = '',
pad = 'line' pad = 'line'
}: SFCParseOptions = {} }: SFCParseOptions = {}
): SFCDescriptor { ): SFCDescriptor {
const sourceKey = source + needMap + filename + sourceRoot + pad const sourceKey = source + sourceMap + filename + sourceRoot + pad
const cache = sourceToSFC.get(sourceKey) const cache = sourceToSFC.get(sourceKey)
if (cache) { if (cache) {
return cache return cache
@ -111,7 +111,7 @@ export function parse(
} }
}) })
if (needMap) { if (sourceMap) {
if (sfc.script && !sfc.script.src) { if (sfc.script && !sfc.script.src) {
sfc.script.map = generateSourceMap( sfc.script.map = generateSourceMap(
filename, filename,