Преглед на файлове

feat(compiler-core): add current filename to TransformContext (#8950)

Adrien Foulon преди 2 години
родител
ревизия
638f1abbb6
променени са 2 файла, в които са добавени 22 реда и са изтрити 1 реда
  1. 20 0
      packages/compiler-core/__tests__/transform.spec.ts
  2. 2 1
      packages/compiler-core/src/transform.ts

+ 20 - 0
packages/compiler-core/__tests__/transform.spec.ts

@@ -200,6 +200,26 @@ describe('compiler: transform', () => {
     expect((ast as any).children[0].props[0].exp.content).toBe(`_hoisted_1`)
     expect((ast as any).children[1].props[0].exp.content).toBe(`_hoisted_2`)
   })
+  
+  test('context.filename and selfName', () => {
+    const ast = baseParse(`<div />`)
+    
+    const calls: any[] = []
+    const plugin: NodeTransform = (node, context) => {
+      calls.push({ ...context })
+    }
+    
+    transform(ast, {
+      filename: '/the/fileName.vue',
+      nodeTransforms: [plugin]
+    })
+    
+    expect(calls.length).toBe(2)
+    expect(calls[1]).toMatchObject({
+      filename: '/the/fileName.vue',
+      selfName: 'FileName'
+    })
+  })
 
   test('onError option', () => {
     const ast = baseParse(`<div/>`)

+ 2 - 1
packages/compiler-core/src/transform.ts

@@ -84,7 +84,7 @@ export interface ImportItem {
 
 export interface TransformContext
   extends Required<
-      Omit<TransformOptions, 'filename' | keyof CompilerCompatOptions>
+      Omit<TransformOptions, keyof CompilerCompatOptions>
     >,
     CompilerCompatOptions {
   selfName: string | null
@@ -153,6 +153,7 @@ export function createTransformContext(
   const nameMatch = filename.replace(/\?.*$/, '').match(/([^/\\]+)\.\w+$/)
   const context: TransformContext = {
     // options
+    filename,
     selfName: nameMatch && capitalize(camelize(nameMatch[1])),
     prefixIdentifiers,
     hoistStatic,