Skip to content

Commit 7f2287c

Browse files
kiroushiFelixGraflmiller1990
authored
feat: support <script setup> in Vue 2.7 (supersedes #483) (#489)
* feat: support <script setup> in Vue 2.7 * refactor: remove unnecessary bindingMetadata * refactor: remove unnecessary refTransform * feat: add setup to generateSourceMap * chore: update Vue dependencies * fix: remove inline sourceMap in vue2 setup scripts * fix: update 2.x snapshot * fix: use appropriate package according to vue version * fix: rebase typo * fix: make script setup & script blocks work together * Update test.js.snap * fixing snapshots Co-authored-by: Felix Graf <[email protected]> Co-authored-by: Lachlan Miller <[email protected]>
1 parent 1cd403d commit 7f2287c

File tree

15 files changed

+216
-60
lines changed

15 files changed

+216
-60
lines changed

e2e/2.x/babel-in-package/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
},
99
"dependencies": {
1010
"source-map": "0.5.6",
11-
"vue": "^2.5.21",
12-
"vue-template-compiler": "^2.5.21"
11+
"vue": "^2.7.7",
12+
"vue-template-compiler": "^2.7.7"
1313
},
1414
"devDependencies": {
1515
"@babel/core": "^7.9.0",

e2e/2.x/basic/__snapshots__/test.js.snap

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
exports[`generates source maps for .vue files 1`] = `
44
{
55
"file": "./components/Basic.vue",
6-
"mappings": ";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;eAEe;AACbA,MAAI,EAAE,OADO;AAEbC,UAAQ,EAAE;AACRC,kBAAc,EAAE,SAASA,cAAT,GAA0B;AACxC,aAAO;AACLC,WAAG,EAAE,KAAKC,OADL;AAELC,YAAI,EAAE,CAAC,KAAKD,OAFP;AAGLE,cAAM,EAAE,KAAKF;AAHR,OAAP;AAKD;AAPO,GAFG;AAWbG,MAAI,EAAE,SAASA,IAAT,GAAgB;AACpB,WAAO;AACLC,SAAG,EAAE,4BADA;AAELJ,aAAO,EAAE;AAFJ,KAAP;AAID,GAhBY;AAiBbK,SAAO,EAAE;AACPC,eAAW,EAAE,SAASA,WAAT,GAAuB;AAClC,WAAKN,OAAL,GAAe,CAAC,KAAKA,OAArB;AACD;AAHM;AAjBI,C",
6+
"mappings": ";;;;;;eACe;AACbA,MAAI,EAAE,OADO;AAEbC,UAAQ,EAAE;AACRC,kBAAc,EAAE,SAASA,cAAT,GAA0B;AACxC,aAAO;AACLC,WAAG,EAAE,KAAKC,OADL;AAELC,YAAI,EAAE,CAAC,KAAKD,OAFP;AAGLE,cAAM,EAAE,KAAKF;AAHR,OAAP;AAKD;AAPO,GAFG;AAWbG,MAAI,EAAE,SAASA,IAAT,GAAgB;AACpB,WAAO;AACLC,SAAG,EAAE,4BADA;AAELJ,aAAO,EAAE;AAFJ,KAAP;AAID,GAhBY;AAiBbK,SAAO,EAAE;AACPC,eAAW,EAAE,SAASA,WAAT,GAAuB;AAClC,WAAKN,OAAL,GAAe,CAAC,KAAKA,OAArB;AACD;AAHM;AAjBI,C",
77
"names": [
88
"name",
99
"computed",
@@ -21,29 +21,7 @@ exports[`generates source maps for .vue files 1`] = `
2121
"Basic.vue",
2222
],
2323
"sourcesContent": [
24-
"//
25-
//
26-
//
27-
//
28-
//
29-
//
30-
//
31-
//
32-
//
33-
//
34-
//
35-
//
36-
//
37-
//
38-
//
39-
//
40-
//
41-
//
42-
//
43-
//
44-
//
45-
//
46-
24+
"
4725
export default {
4826
name: 'basic',
4927
computed: {
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<template>
2+
<div>
3+
<button @click="increase">Count: {{ num }}</button>
4+
<Basic />
5+
<span>{{ msg }}</span>
6+
</div>
7+
</template>
8+
9+
<script lang="ts" setup>
10+
import { ref } from 'vue'
11+
import Basic from './Basic.vue'
12+
13+
const num = ref(5)
14+
const greet = () => console.log('greet')
15+
const increase = () => {
16+
greet()
17+
num.value++
18+
}
19+
const msg = 'hello world'
20+
</script>

e2e/2.x/basic/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
"test": "jest --no-cache --coverage test.js"
88
},
99
"dependencies": {
10-
"vue": "^2.5.21",
11-
"vue-template-compiler": "^2.5.21"
10+
"vue": "^2.7.7",
11+
"vue-template-compiler": "^2.7.7"
1212
},
1313
"devDependencies": {
1414
"@babel/core": "^7.9.0",

e2e/2.x/basic/test.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import PugRelative from './components/PugRelativeExtends.vue'
2020
import Jsx from './components/Jsx.vue'
2121
import Constructor from './components/Constructor.vue'
2222
import { compileStyle } from '@vue/component-compiler-utils'
23+
import ScriptSetup from './components/ScriptSetup'
2324
jest.mock('@vue/component-compiler-utils', () => ({
2425
...jest.requireActual('@vue/component-compiler-utils'),
2526
compileStyle: jest.fn(() => ({ errors: [], code: '' }))
@@ -156,6 +157,12 @@ test('processes SFC with no template', () => {
156157
expect(wrapper.element.tagName).toBe('SECTION')
157158
})
158159

160+
test('processes SFC with <script setup>', () => {
161+
const wrapper = mount(ScriptSetup)
162+
expect(wrapper.html()).toContain('Count: 5')
163+
expect(wrapper.html()).toContain('Welcome to Your Vue.js App')
164+
})
165+
159166
test('should pass properly "styleOptions" into "preprocessOptions"', () => {
160167
const filePath = resolve(__dirname, './components/Basic.vue')
161168
const fileString = readFileSync(filePath, { encoding: 'utf8' })

e2e/2.x/custom-transformers/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
"test": "jest --no-cache --coverage test.js"
88
},
99
"dependencies": {
10-
"vue": "^2.5.21",
11-
"vue-template-compiler": "^2.5.21"
10+
"vue": "^2.7.7",
11+
"vue-template-compiler": "^2.7.7"
1212
},
1313
"devDependencies": {
1414
"@babel/core": "^7.9.0",

e2e/2.x/sass-importer/entry/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
"test": "jest --no-cache --coverage test.js"
88
},
99
"dependencies": {
10-
"vue": "^2.5.21",
11-
"vue-template-compiler": "^2.5.21",
10+
"vue": "^2.7.7",
11+
"vue-template-compiler": "^2.7.7",
1212
"vue2-sass-importer-lib": "file:../lib",
1313
"vue2-sass-importer-sass-lib": "file:../sass-lib-v2"
1414
},

e2e/2.x/sass-importer/lib/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@
1414
"vue2-sass-importer-sass-lib": "file:../sass-lib-v1"
1515
},
1616
"peerDependencies": {
17-
"vue": "^2.5.21"
17+
"vue": "^2.7.7"
1818
}
1919
}

e2e/2.x/style/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
"test": "node setup.js && jest --no-cache test.js"
88
},
99
"dependencies": {
10-
"vue": "^2.5.21",
11-
"vue-template-compiler": "^2.5.21"
10+
"vue": "^2.7.7",
11+
"vue-template-compiler": "^2.7.7"
1212
},
1313
"devDependencies": {
1414
"@babel/core": "^7.9.0",

packages/vue2-jest/lib/generate-code.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ function addToSourceMap(node, result) {
1818

1919
module.exports = function generateCode(
2020
scriptResult,
21+
scriptSetupResult,
2122
templateResult,
2223
stylesResult,
2324
customBlocksResult,
@@ -26,8 +27,9 @@ module.exports = function generateCode(
2627
) {
2728
var node = new SourceNode(null, null)
2829

29-
if (scriptResult) {
30-
addToSourceMap(node, scriptResult)
30+
if (scriptResult || scriptSetupResult) {
31+
scriptResult && addToSourceMap(node, scriptResult)
32+
scriptSetupResult && addToSourceMap(node, scriptSetupResult)
3133
} else {
3234
node.add(
3335
`Object.defineProperty(exports, "__esModule", {\n` +

0 commit comments

Comments
 (0)