Pārlūkot izejas kodu

refactor: adjust sfc compiler options

Evan You 6 gadi atpakaļ
vecāks
revīzija
3e3188fa9f

+ 2 - 2
packages/compiler-sfc/__tests__/compileTemplate.spec.ts

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

+ 11 - 7
packages/compiler-sfc/src/compileTemplate.ts

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

+ 4 - 4
packages/compiler-sfc/src/parse.ts

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