]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
refactor(compiler-core): move compile into separate file
authorEvan You <yyx990803@gmail.com>
Fri, 13 Dec 2019 18:22:15 +0000 (13:22 -0500)
committerEvan You <yyx990803@gmail.com>
Fri, 13 Dec 2019 18:22:15 +0000 (13:22 -0500)
packages/compiler-core/src/codegen.ts
packages/compiler-core/src/compile.ts [new file with mode: 0644]
packages/compiler-core/src/index.ts

index 939a07f8eb5eb12440303b42d977a039d72f2f20..dee28eebfadb280290159d710a2965f412ad4ecb 100644 (file)
@@ -84,13 +84,7 @@ function createCodegenContext(
     line: 1,
     offset: 0,
     indentLevel: 0,
-
-    // lazy require source-map implementation, only in non-browser builds!
-    map:
-      __BROWSER__ || !sourceMap
-        ? undefined
-        : new (loadDep('source-map')).SourceMapGenerator(),
-
+    map: undefined,
     helper(key) {
       const name = helperNameMap[key]
       return prefixIdentifiers ? name : `_${name}`
@@ -148,9 +142,12 @@ function createCodegenContext(
     })
   }
 
-  if (!__BROWSER__ && context.map) {
-    context.map.setSourceContent(filename, context.source)
+  if (!__BROWSER__ && sourceMap) {
+    // lazy require source-map implementation, only in non-browser builds
+    context.map = new (loadDep('source-map')).SourceMapGenerator()
+    context.map!.setSourceContent(filename, context.source)
   }
+
   return context
 }
 
diff --git a/packages/compiler-core/src/compile.ts b/packages/compiler-core/src/compile.ts
new file mode 100644 (file)
index 0000000..0ff5316
--- /dev/null
@@ -0,0 +1,74 @@
+import { CompilerOptions } from './options'
+import { parse } from './parse'
+import { transform } from './transform'
+import { generate, CodegenResult } from './codegen'
+import { RootNode } from './ast'
+import { isString } from '@vue/shared'
+import { transformIf } from './transforms/vIf'
+import { transformFor } from './transforms/vFor'
+import { transformExpression } from './transforms/transformExpression'
+import { transformSlotOutlet } from './transforms/transformSlotOutlet'
+import { transformElement } from './transforms/transformElement'
+import { transformOn } from './transforms/vOn'
+import { transformBind } from './transforms/vBind'
+import { trackSlotScopes, trackVForSlotScopes } from './transforms/vSlot'
+import { transformText } from './transforms/transformText'
+import { transformOnce } from './transforms/vOnce'
+import { transformModel } from './transforms/vModel'
+import { defaultOnError, createCompilerError, ErrorCodes } from './errors'
+
+// we name it `baseCompile` so that higher order compilers like @vue/compiler-dom
+// can export `compile` while re-exporting everything else.
+export function baseCompile(
+  template: string | RootNode,
+  options: CompilerOptions = {}
+): CodegenResult {
+  /* istanbul ignore if */
+  if (__BROWSER__) {
+    const onError = options.onError || defaultOnError
+    if (options.prefixIdentifiers === true) {
+      onError(createCompilerError(ErrorCodes.X_PREFIX_ID_NOT_SUPPORTED))
+    } else if (options.mode === 'module') {
+      onError(createCompilerError(ErrorCodes.X_MODULE_MODE_NOT_SUPPORTED))
+    }
+  }
+
+  const ast = isString(template) ? parse(template, options) : template
+
+  const prefixIdentifiers =
+    !__BROWSER__ &&
+    (options.prefixIdentifiers === true || options.mode === 'module')
+
+  transform(ast, {
+    ...options,
+    prefixIdentifiers,
+    nodeTransforms: [
+      transformOnce,
+      transformIf,
+      transformFor,
+      ...(prefixIdentifiers
+        ? [
+            // order is important
+            trackVForSlotScopes,
+            transformExpression
+          ]
+        : []),
+      transformSlotOutlet,
+      transformElement,
+      trackSlotScopes,
+      transformText,
+      ...(options.nodeTransforms || []) // user transforms
+    ],
+    directiveTransforms: {
+      on: transformOn,
+      bind: transformBind,
+      model: transformModel,
+      ...(options.directiveTransforms || {}) // user transforms
+    }
+  })
+
+  return generate(ast, {
+    ...options,
+    prefixIdentifiers
+  })
+}
index d5ce029779a27f221b50339fef15b4b213490df8..723fe8c3b21d01c4c9ef23cbd1fa9d556061b654 100644 (file)
@@ -1,77 +1,4 @@
-import { CompilerOptions } from './options'
-import { parse } from './parse'
-import { transform } from './transform'
-import { generate, CodegenResult } from './codegen'
-import { RootNode } from './ast'
-import { isString } from '@vue/shared'
-import { transformIf } from './transforms/vIf'
-import { transformFor } from './transforms/vFor'
-import { transformExpression } from './transforms/transformExpression'
-import { transformSlotOutlet } from './transforms/transformSlotOutlet'
-import { transformElement } from './transforms/transformElement'
-import { transformOn } from './transforms/vOn'
-import { transformBind } from './transforms/vBind'
-import { defaultOnError, createCompilerError, ErrorCodes } from './errors'
-import { trackSlotScopes, trackVForSlotScopes } from './transforms/vSlot'
-import { transformText } from './transforms/transformText'
-import { transformOnce } from './transforms/vOnce'
-import { transformModel } from './transforms/vModel'
-
-// we name it `baseCompile` so that higher order compilers like @vue/compiler-dom
-// can export `compile` while re-exporting everything else.
-export function baseCompile(
-  template: string | RootNode,
-  options: CompilerOptions = {}
-): CodegenResult {
-  /* istanbul ignore if */
-  if (__BROWSER__) {
-    const onError = options.onError || defaultOnError
-    if (options.prefixIdentifiers === true) {
-      onError(createCompilerError(ErrorCodes.X_PREFIX_ID_NOT_SUPPORTED))
-    } else if (options.mode === 'module') {
-      onError(createCompilerError(ErrorCodes.X_MODULE_MODE_NOT_SUPPORTED))
-    }
-  }
-
-  const ast = isString(template) ? parse(template, options) : template
-
-  const prefixIdentifiers =
-    !__BROWSER__ &&
-    (options.prefixIdentifiers === true || options.mode === 'module')
-
-  transform(ast, {
-    ...options,
-    prefixIdentifiers,
-    nodeTransforms: [
-      transformOnce,
-      transformIf,
-      transformFor,
-      ...(prefixIdentifiers
-        ? [
-            // order is important
-            trackVForSlotScopes,
-            transformExpression
-          ]
-        : []),
-      transformSlotOutlet,
-      transformElement,
-      trackSlotScopes,
-      transformText,
-      ...(options.nodeTransforms || []) // user transforms
-    ],
-    directiveTransforms: {
-      on: transformOn,
-      bind: transformBind,
-      model: transformModel,
-      ...(options.directiveTransforms || {}) // user transforms
-    }
-  })
-
-  return generate(ast, {
-    ...options,
-    prefixIdentifiers
-  })
-}
+export { baseCompile } from './compile'
 
 // Also expose lower level APIs & types
 export {