Skip to content

Commit b89ff92

Browse files
committed
fix(compiler-sfc): ensure script setup lang=ts output is tree-shakable
1 parent 935b4e2 commit b89ff92

File tree

3 files changed

+28
-28
lines changed

3 files changed

+28
-28
lines changed

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

+25-25
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ return { x }
4949
name: \\"test\\"
5050
}
5151
52-
export default _defineComponent({
52+
export default /*#__PURE__*/_defineComponent({
5353
...__default__,
5454
setup})"
5555
`;
@@ -193,7 +193,7 @@ exports[`SFC compile <script setup> dev mode import usage check components 1`] =
193193
"import { defineComponent as _defineComponent } from 'vue'
194194
import { FooBar, FooBaz, FooQux, foo } from './x'
195195
196-
export default _defineComponent({
196+
export default /*#__PURE__*/_defineComponent({
197197
setup(__props, { expose }) {
198198
expose()
199199
@@ -209,7 +209,7 @@ exports[`SFC compile <script setup> dev mode import usage check directive 1`] =
209209
"import { defineComponent as _defineComponent } from 'vue'
210210
import { vMyDir } from './x'
211211
212-
export default _defineComponent({
212+
export default /*#__PURE__*/_defineComponent({
213213
setup(__props, { expose }) {
214214
expose()
215215
@@ -224,7 +224,7 @@ exports[`SFC compile <script setup> dev mode import usage check js template stri
224224
"import { defineComponent as _defineComponent } from 'vue'
225225
import { VAR, VAR2, VAR3 } from './x'
226226
227-
export default _defineComponent({
227+
export default /*#__PURE__*/_defineComponent({
228228
setup(__props, { expose }) {
229229
expose()
230230
@@ -239,7 +239,7 @@ exports[`SFC compile <script setup> dev mode import usage check last tag 1`] = `
239239
"import { defineComponent as _defineComponent } from 'vue'
240240
import { FooBaz, Last } from './x'
241241
242-
export default _defineComponent({
242+
export default /*#__PURE__*/_defineComponent({
243243
setup(__props, { expose }) {
244244
expose()
245245
@@ -254,7 +254,7 @@ exports[`SFC compile <script setup> dev mode import usage check vue interpolatio
254254
"import { defineComponent as _defineComponent } from 'vue'
255255
import { x, y, z, x$y } from './x'
256256
257-
export default _defineComponent({
257+
export default /*#__PURE__*/_defineComponent({
258258
setup(__props, { expose }) {
259259
expose()
260260
@@ -688,7 +688,7 @@ exports[`SFC compile <script setup> with TypeScript const Enum 1`] = `
688688
"import { defineComponent as _defineComponent } from 'vue'
689689
const enum Foo { A = 123 }
690690
691-
export default _defineComponent({
691+
export default /*#__PURE__*/_defineComponent({
692692
setup(__props, { expose }) {
693693
expose()
694694
@@ -703,7 +703,7 @@ exports[`SFC compile <script setup> with TypeScript defineEmits w/ type (exporte
703703
"import { defineComponent as _defineComponent } from 'vue'
704704
export interface Emits { (e: 'foo' | 'bar'): void }
705705
706-
export default _defineComponent({
706+
export default /*#__PURE__*/_defineComponent({
707707
emits: [\\"foo\\", \\"bar\\"] as unknown as undefined,
708708
setup(__props, { expose, emit }: { emit: ({ (e: 'foo' | 'bar'): void }), expose: any, slots: any, attrs: any }) {
709709
expose()
@@ -720,7 +720,7 @@ exports[`SFC compile <script setup> with TypeScript defineEmits w/ type (exporte
720720
"import { defineComponent as _defineComponent } from 'vue'
721721
export type Emits = { (e: 'foo' | 'bar'): void }
722722
723-
export default _defineComponent({
723+
export default /*#__PURE__*/_defineComponent({
724724
emits: [\\"foo\\", \\"bar\\"] as unknown as undefined,
725725
setup(__props, { expose, emit }: { emit: ({ (e: 'foo' | 'bar'): void }), expose: any, slots: any, attrs: any }) {
726726
expose()
@@ -737,7 +737,7 @@ exports[`SFC compile <script setup> with TypeScript defineEmits w/ type (interfa
737737
"import { defineComponent as _defineComponent } from 'vue'
738738
interface Emits { (e: 'foo' | 'bar'): void }
739739
740-
export default _defineComponent({
740+
export default /*#__PURE__*/_defineComponent({
741741
emits: [\\"foo\\", \\"bar\\"] as unknown as undefined,
742742
setup(__props, { expose, emit }: { emit: ({ (e: 'foo' | 'bar'): void }), expose: any, slots: any, attrs: any }) {
743743
expose()
@@ -754,7 +754,7 @@ exports[`SFC compile <script setup> with TypeScript defineEmits w/ type (referen
754754
"import { defineComponent as _defineComponent } from 'vue'
755755
export type Emits = (e: 'foo' | 'bar') => void
756756
757-
export default _defineComponent({
757+
export default /*#__PURE__*/_defineComponent({
758758
emits: [\\"foo\\", \\"bar\\"] as unknown as undefined,
759759
setup(__props, { expose, emit }: { emit: ((e: 'foo' | 'bar') => void), expose: any, slots: any, attrs: any }) {
760760
expose()
@@ -771,7 +771,7 @@ exports[`SFC compile <script setup> with TypeScript defineEmits w/ type (referen
771771
"import { defineComponent as _defineComponent } from 'vue'
772772
type Emits = (e: 'foo' | 'bar') => void
773773
774-
export default _defineComponent({
774+
export default /*#__PURE__*/_defineComponent({
775775
emits: [\\"foo\\", \\"bar\\"] as unknown as undefined,
776776
setup(__props, { expose, emit }: { emit: ((e: 'foo' | 'bar') => void), expose: any, slots: any, attrs: any }) {
777777
expose()
@@ -788,7 +788,7 @@ exports[`SFC compile <script setup> with TypeScript defineEmits w/ type (type al
788788
"import { defineComponent as _defineComponent } from 'vue'
789789
type Emits = { (e: 'foo' | 'bar'): void }
790790
791-
export default _defineComponent({
791+
export default /*#__PURE__*/_defineComponent({
792792
emits: [\\"foo\\", \\"bar\\"] as unknown as undefined,
793793
setup(__props, { expose, emit }: { emit: ({ (e: 'foo' | 'bar'): void }), expose: any, slots: any, attrs: any }) {
794794
expose()
@@ -804,7 +804,7 @@ return { emit }
804804
exports[`SFC compile <script setup> with TypeScript defineEmits w/ type (type literal w/ call signatures) 1`] = `
805805
"import { defineComponent as _defineComponent } from 'vue'
806806
807-
export default _defineComponent({
807+
export default /*#__PURE__*/_defineComponent({
808808
emits: [\\"foo\\", \\"bar\\", \\"baz\\"] as unknown as undefined,
809809
setup(__props, { expose, emit }: { emit: ({(e: 'foo' | 'bar'): void; (e: 'baz', id: number): void;}), expose: any, slots: any, attrs: any }) {
810810
expose()
@@ -820,7 +820,7 @@ return { emit }
820820
exports[`SFC compile <script setup> with TypeScript defineEmits w/ type 1`] = `
821821
"import { defineComponent as _defineComponent } from 'vue'
822822
823-
export default _defineComponent({
823+
export default /*#__PURE__*/_defineComponent({
824824
emits: [\\"foo\\", \\"bar\\"] as unknown as undefined,
825825
setup(__props, { expose, emit }: { emit: ((e: 'foo' | 'bar') => void), expose: any, slots: any, attrs: any }) {
826826
expose()
@@ -837,7 +837,7 @@ exports[`SFC compile <script setup> with TypeScript defineProps w/ exported inte
837837
"import { defineComponent as _defineComponent } from 'vue'
838838
export interface Props { x?: number }
839839
840-
export default _defineComponent({
840+
export default /*#__PURE__*/_defineComponent({
841841
props: {
842842
x: { type: Number, required: false }
843843
} as unknown as undefined,
@@ -856,7 +856,7 @@ exports[`SFC compile <script setup> with TypeScript defineProps w/ exported type
856856
"import { defineComponent as _defineComponent } from 'vue'
857857
export type Props = { x?: number }
858858
859-
export default _defineComponent({
859+
export default /*#__PURE__*/_defineComponent({
860860
props: {
861861
x: { type: Number, required: false }
862862
} as unknown as undefined,
@@ -875,7 +875,7 @@ exports[`SFC compile <script setup> with TypeScript defineProps w/ interface 1`]
875875
"import { defineComponent as _defineComponent } from 'vue'
876876
interface Props { x?: number }
877877
878-
export default _defineComponent({
878+
export default /*#__PURE__*/_defineComponent({
879879
props: {
880880
x: { type: Number, required: false }
881881
} as unknown as undefined,
@@ -897,7 +897,7 @@ interface Test {}
897897
type Alias = number[]
898898
899899
900-
export default _defineComponent({
900+
export default /*#__PURE__*/_defineComponent({
901901
props: {
902902
string: { type: String, required: true },
903903
number: { type: Number, required: true },
@@ -965,7 +965,7 @@ exports[`SFC compile <script setup> with TypeScript defineProps w/ type alias 1`
965965
"import { defineComponent as _defineComponent } from 'vue'
966966
type Props = { x?: number }
967967
968-
export default _defineComponent({
968+
export default /*#__PURE__*/_defineComponent({
969969
props: {
970970
x: { type: Number, required: false }
971971
} as unknown as undefined,
@@ -983,7 +983,7 @@ return { }
983983
exports[`SFC compile <script setup> with TypeScript defineProps/Emit w/ runtime options 1`] = `
984984
"import { defineComponent as _defineComponent } from 'vue'
985985
986-
export default _defineComponent({
986+
export default /*#__PURE__*/_defineComponent({
987987
props: { foo: String },
988988
emits: ['a', 'b'],
989989
setup(__props, { expose, emit }) {
@@ -1004,7 +1004,7 @@ exports[`SFC compile <script setup> with TypeScript hoist type declarations 1`]
10041004
export interface Foo {}
10051005
type Bar = {}
10061006
1007-
export default _defineComponent({
1007+
export default /*#__PURE__*/_defineComponent({
10081008
setup(__props, { expose }) {
10091009
expose()
10101010
@@ -1019,7 +1019,7 @@ exports[`SFC compile <script setup> with TypeScript runtime Enum 1`] = `
10191019
"import { defineComponent as _defineComponent } from 'vue'
10201020
enum Foo { A = 123 }
10211021
1022-
export default _defineComponent({
1022+
export default /*#__PURE__*/_defineComponent({
10231023
setup(__props, { expose }) {
10241024
expose()
10251025
@@ -1034,7 +1034,7 @@ exports[`SFC compile <script setup> with TypeScript withDefaults (dynamic) 1`] =
10341034
"import { mergeDefaults as _mergeDefaults, defineComponent as _defineComponent } from 'vue'
10351035
import { defaults } from './foo'
10361036
1037-
export default _defineComponent({
1037+
export default /*#__PURE__*/_defineComponent({
10381038
props: _mergeDefaults({
10391039
foo: { type: String, required: false },
10401040
bar: { type: Number, required: false }
@@ -1057,7 +1057,7 @@ return { props, defaults }
10571057
exports[`SFC compile <script setup> with TypeScript withDefaults (static) 1`] = `
10581058
"import { defineComponent as _defineComponent } from 'vue'
10591059
1060-
export default _defineComponent({
1060+
export default /*#__PURE__*/_defineComponent({
10611061
props: {
10621062
foo: { type: String, required: false, default: 'hi' },
10631063
bar: { type: Number, required: false }

packages/compiler-sfc/__tests__/compileScript.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -638,7 +638,7 @@ const emit = defineEmits(['a', 'b'])
638638
</script>
639639
`)
640640
assertCode(content)
641-
expect(content).toMatch(`export default _defineComponent({
641+
expect(content).toMatch(`export default /*#__PURE__*/_defineComponent({
642642
props: { foo: String },
643643
emits: ['a', 'b'],
644644
setup(__props, { expose, emit }) {`)

packages/compiler-sfc/src/compileScript.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1148,14 +1148,14 @@ export function compileScript(
11481148
`\n${hasAwait ? `async ` : ``}function setup(${args}) {\n`
11491149
)
11501150
s.append(
1151-
`\nexport default ${helper(
1151+
`\nexport default /*#__PURE__*/${helper(
11521152
`defineComponent`
11531153
)}({${def}${runtimeOptions}\n setup})`
11541154
)
11551155
} else {
11561156
s.prependLeft(
11571157
startOffset,
1158-
`\nexport default ${helper(
1158+
`\nexport default /*#__PURE__*/${helper(
11591159
`defineComponent`
11601160
)}({${def}${runtimeOptions}\n ${
11611161
hasAwait ? `async ` : ``

0 commit comments

Comments
 (0)