Skip to content

Commit 4855375

Browse files
authored
fix(vue3-jest): reduce getTypeScriptConfig calls (#491)
* fix(vue3-jest): reduce `getTypeScriptConfig` calls * test(vue3-basic): update snapshot typescript -> @babel/preset-env
1 parent 6d1eec5 commit 4855375

File tree

2 files changed

+57
-40
lines changed

2 files changed

+57
-40
lines changed

Diff for: e2e/3.x/basic/__snapshots__/test.js.snap

+36-24
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,25 @@ var _default = {
3232
};
3333
exports[\\"default\\"] = _default;
3434
\\"use strict\\";
35-
Object.defineProperty(exports, \\"__esModule\\", { value: true });
36-
exports.render = void 0;
37-
var vue_1 = require(\\"vue\\");
38-
var _hoisted_1 = { class: \\"hello\\" };
39-
function render(_ctx, _cache) {
40-
return ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\\"div\\", _hoisted_1, [
41-
(0, vue_1.createElementVNode)(\\"h1\\", {
42-
class: (0, vue_1.normalizeClass)(_ctx.headingClasses)
43-
}, (0, vue_1.toDisplayString)(_ctx.msg), 3 /* TEXT, CLASS */)
44-
]));
45-
}
35+
36+
Object.defineProperty(exports, \\"__esModule\\", {
37+
value: true
38+
});
4639
exports.render = render;
47-
;exports.default = {...exports.default, render};;exports.default = {...exports.default, __cssModules: {\\"css\\":{\\"testA\\":\\"testA\\"},\\"$style\\":{\\"testB\\":\\"testB\\"}}}"
40+
41+
var _vue = require(\\"vue\\");
42+
43+
var _hoisted_1 = {
44+
\\"class\\": \\"hello\\"
45+
};
46+
47+
function render(_ctx, _cache) {
48+
return (0, _vue.openBlock)(), (0, _vue.createElementBlock)(\\"div\\", _hoisted_1, [(0, _vue.createElementVNode)(\\"h1\\", {
49+
\\"class\\": (0, _vue.normalizeClass)(_ctx.headingClasses)
50+
}, (0, _vue.toDisplayString)(_ctx.msg), 3
51+
/* TEXT, CLASS */
52+
)]);
53+
};exports.default = {...exports.default, render};;exports.default = {...exports.default, __cssModules: {\\"css\\":{\\"testA\\":\\"testA\\"},\\"$style\\":{\\"testB\\":\\"testB\\"}}}"
4854
`;
4955

5056
exports[`generates source maps using src attributes 1`] = `
@@ -79,17 +85,23 @@ var _default = {
7985
};
8086
exports[\\"default\\"] = _default;
8187
\\"use strict\\";
82-
Object.defineProperty(exports, \\"__esModule\\", { value: true });
83-
exports.render = void 0;
84-
var vue_1 = require(\\"vue\\");
85-
var _hoisted_1 = { class: \\"hello\\" };
86-
function render(_ctx, _cache) {
87-
return ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\\"div\\", _hoisted_1, [
88-
(0, vue_1.createElementVNode)(\\"h1\\", {
89-
class: (0, vue_1.normalizeClass)(_ctx.headingClasses)
90-
}, (0, vue_1.toDisplayString)(_ctx.msg), 3 /* TEXT, CLASS */)
91-
]));
92-
}
88+
89+
Object.defineProperty(exports, \\"__esModule\\", {
90+
value: true
91+
});
9392
exports.render = render;
94-
;exports.default = {...exports.default, render};"
93+
94+
var _vue = require(\\"vue\\");
95+
96+
var _hoisted_1 = {
97+
\\"class\\": \\"hello\\"
98+
};
99+
100+
function render(_ctx, _cache) {
101+
return (0, _vue.openBlock)(), (0, _vue.createElementBlock)(\\"div\\", _hoisted_1, [(0, _vue.createElementVNode)(\\"h1\\", {
102+
\\"class\\": (0, _vue.normalizeClass)(_ctx.headingClasses)
103+
}, (0, _vue.toDisplayString)(_ctx.msg), 3
104+
/* TEXT, CLASS */
105+
)]);
106+
};exports.default = {...exports.default, render};"
95107
`;

Diff for: packages/vue3-jest/lib/process.js

+21-16
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,12 @@ function processScriptSetup(descriptor, filePath, config) {
7171
return result
7272
}
7373

74+
/**
75+
* Process SFC <template> section.
76+
* @param {import('@vue/compiler-sfc').SFCDescriptor} descriptor
77+
* @param {string} filename
78+
* @param {import('@jest/transform').TransformOptions} config
79+
*/
7480
function processTemplate(descriptor, filename, config) {
7581
const { template, scriptSetup } = descriptor
7682

@@ -118,24 +124,23 @@ function processTemplate(descriptor, filename, config) {
118124

119125
logResultErrors(result)
120126

121-
const tsconfig = getTypeScriptConfig(vueJestConfig.tsConfig)
122-
123-
if (tsconfig) {
124-
// they are using TypeScript.
125-
const { transpileModule } = require('typescript')
126-
const { outputText } = transpileModule(result.code, { tsconfig })
127-
return { code: outputText }
128-
} else {
129-
// babel
130-
const babelify = transform(result.code, {
131-
filename: 'file.js',
132-
presets: ['@babel/preset-env']
133-
})
134-
135-
return {
136-
code: babelify.code
127+
// TypeScript
128+
if (isTS) {
129+
const tsconfig = getTypeScriptConfig(vueJestConfig.tsConfig)
130+
if (tsconfig) {
131+
const { transpileModule } = require('typescript')
132+
const { outputText } = transpileModule(result.code, { tsconfig })
133+
return { code: outputText }
137134
}
138135
}
136+
137+
// babel
138+
const babelify = transform(result.code, {
139+
filename: 'file.js',
140+
presets: ['@babel/preset-env']
141+
})
142+
143+
return { code: babelify.code }
139144
}
140145

141146
function processStyle(styles, filename, config) {

0 commit comments

Comments
 (0)