Ver Fonte

fix(compiler-sfc): should not remove import statements with no specifier when compiling script setup

Evan You há 5 anos atrás
pai
commit
43eab923ea

+ 3 - 0
packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap

@@ -181,10 +181,13 @@ return { a, b }
 
 exports[`SFC compile <script setup> imports should hoist and expose imports 1`] = `
 "import { ref } from 'vue'
+          import 'foo/css'
+        
 export default {
   expose: [],
   setup(__props) {
 
+          
 return { ref }
 }
 

+ 4 - 1
packages/compiler-sfc/__tests__/compileScript.spec.ts

@@ -123,7 +123,10 @@ const myEmit = defineEmit(['foo', 'bar'])
   describe('imports', () => {
     test('should hoist and expose imports', () => {
       assertCode(
-        compile(`<script setup>import { ref } from 'vue'</script>`).content
+        compile(`<script setup>
+          import { ref } from 'vue'
+          import 'foo/css'
+        </script>`).content
       )
     })
 

+ 1 - 1
packages/compiler-sfc/src/compileScript.ts

@@ -638,7 +638,7 @@ export function compileScript(
           )
         }
       }
-      if (removed === node.specifiers.length) {
+      if (node.specifiers.length && removed === node.specifiers.length) {
         s.remove(node.start! + startOffset, node.end! + startOffset)
       }
     }