Skip to content

Commit f88a719

Browse files
authored
Merge pull request #264 from vuejs/combine-ts-and-babel
Use transpileModule for TS and transform for babel conditionally
2 parents 9de7917 + b7ab5d6 commit f88a719

File tree

2 files changed

+32
-39
lines changed

2 files changed

+32
-39
lines changed

e2e/__projects__/basic/__snapshots__/test.js.snap

Lines changed: 18 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -33,25 +33,16 @@ var _default = {
3333
exports[\\"default\\"] = _default;
3434
;
3535
\\"use strict\\";
36-
37-
Object.defineProperty(exports, \\"__esModule\\", {
38-
value: true
39-
});
40-
exports.render = render;
41-
42-
var _vue = require(\\"vue\\");
43-
44-
var _hoisted_1 = {
45-
\\"class\\": \\"hello\\"
46-
};
47-
36+
Object.defineProperty(exports, \\"__esModule\\", { value: true });
37+
var vue_1 = require(\\"vue\\");
38+
var _hoisted_1 = { class: \\"hello\\" };
4839
function render(_ctx, _cache) {
49-
return (0, _vue.openBlock)(), (0, _vue.createBlock)(\\"div\\", _hoisted_1, [(0, _vue.createVNode)(\\"h1\\", {
50-
\\"class\\": _ctx.headingClasses
51-
}, (0, _vue.toDisplayString)(_ctx.msg), 3
52-
/* TEXT, CLASS */
53-
)]);
54-
};
40+
return (vue_1.openBlock(), vue_1.createBlock(\\"div\\", _hoisted_1, [
41+
vue_1.createVNode(\\"h1\\", { class: _ctx.headingClasses }, vue_1.toDisplayString(_ctx.msg), 3 /* TEXT, CLASS */)
42+
]));
43+
}
44+
exports.render = render;
45+
;
5546
;exports.default = {...exports.default, render};
5647
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJhc2ljLnZ1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBUEE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBakJBIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiaGVsbG9cIj5cbiAgICA8aDEgOmNsYXNzPVwiaGVhZGluZ0NsYXNzZXNcIj57eyBtc2cgfX08L2gxPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBtb2R1bGU9XCJjc3NcIj5cbi50ZXN0QSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJlZDtcbn1cbjwvc3R5bGU+XG48c3R5bGUgbW9kdWxlPlxuLnRlc3RCIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTtcbn1cbjwvc3R5bGU+XG48c3R5bGU+XG4udGVzdEMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlO1xufVxuPC9zdHlsZT5cblxuPHNjcmlwdD5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2Jhc2ljJyxcbiAgY29tcHV0ZWQ6IHtcbiAgICBoZWFkaW5nQ2xhc3NlczogZnVuY3Rpb24gaGVhZGluZ0NsYXNzZXMoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZWQ6IHRoaXMuaXNDcmF6eSxcbiAgICAgICAgYmx1ZTogIXRoaXMuaXNDcmF6eSxcbiAgICAgICAgc2hhZG93OiB0aGlzLmlzQ3JhenlcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1zZzogJ1dlbGNvbWUgdG8gWW91ciBWdWUuanMgQXBwJyxcbiAgICAgIGlzQ3Jhenk6IGZhbHNlXG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgdG9nZ2xlQ2xhc3M6IGZ1bmN0aW9uIHRvZ2dsZUNsYXNzKCkge1xuICAgICAgdGhpcy5pc0NyYXp5ID0gIXRoaXMuaXNDcmF6eVxuICAgIH1cbiAgfVxufVxuPC9zY3JpcHQ+XG4iXX0="
5748
`;
@@ -89,25 +80,16 @@ var _default = {
8980
exports[\\"default\\"] = _default;
9081
;
9182
\\"use strict\\";
92-
93-
Object.defineProperty(exports, \\"__esModule\\", {
94-
value: true
95-
});
96-
exports.render = render;
97-
98-
var _vue = require(\\"vue\\");
99-
100-
var _hoisted_1 = {
101-
\\"class\\": \\"hello\\"
102-
};
103-
83+
Object.defineProperty(exports, \\"__esModule\\", { value: true });
84+
var vue_1 = require(\\"vue\\");
85+
var _hoisted_1 = { class: \\"hello\\" };
10486
function render(_ctx, _cache) {
105-
return (0, _vue.openBlock)(), (0, _vue.createBlock)(\\"div\\", _hoisted_1, [(0, _vue.createVNode)(\\"h1\\", {
106-
\\"class\\": _ctx.headingClasses
107-
}, (0, _vue.toDisplayString)(_ctx.msg), 3
108-
/* TEXT, CLASS */
109-
)]);
110-
};
87+
return (vue_1.openBlock(), vue_1.createBlock(\\"div\\", _hoisted_1, [
88+
vue_1.createVNode(\\"h1\\", { class: _ctx.headingClasses }, vue_1.toDisplayString(_ctx.msg), 3 /* TEXT, CLASS */)
89+
]));
90+
}
91+
exports.render = render;
92+
;
11193
;exports.default = {...exports.default, render};
11294
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNvdXJjZU1hcHNTcmMudnVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFQQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFqQkEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdiYXNpYycsXG4gIGNvbXB1dGVkOiB7XG4gICAgaGVhZGluZ0NsYXNzZXM6IGZ1bmN0aW9uIGhlYWRpbmdDbGFzc2VzKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVkOiB0aGlzLmlzQ3JhenksXG4gICAgICAgIGJsdWU6ICF0aGlzLmlzQ3JhenksXG4gICAgICAgIHNoYWRvdzogdGhpcy5pc0NyYXp5XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBtc2c6ICdXZWxjb21lIHRvIFlvdXIgVnVlLmpzIEFwcCcsXG4gICAgICBpc0NyYXp5OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHRvZ2dsZUNsYXNzOiBmdW5jdGlvbiB0b2dnbGVDbGFzcygpIHtcbiAgICAgIHRoaXMuaXNDcmF6eSA9ICF0aGlzLmlzQ3JhenlcbiAgICB9XG4gIH1cbn1cbiJdfQ=="
11395
`;

lib/process.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ const { parse, compileTemplate } = require('@vue/compiler-sfc')
22
const { transform } = require('@babel/core')
33
const convertSourceMap = require('convert-source-map')
44
const babelTransformer = require('babel-jest')
5+
const { transpileModule } = require('typescript')
56

67
const generateSourceMap = require('./generate-source-map')
78
const typescriptTransformer = require('./transformers/typescript')
89
const coffeescriptTransformer = require('./transformers/coffee')
910
const _processStyle = require('./process-style')
1011
const processCustomBlocks = require('./process-custom-blocks')
1112
const getVueJestConfig = require('./utils').getVueJestConfig
13+
const getTsJestConfig = require('./utils').getTsJestConfig
1214
const logResultErrors = require('./utils').logResultErrors
1315
const stripInlineSourceMap = require('./utils').stripInlineSourceMap
1416
const getCustomTransformer = require('./utils').getCustomTransformer
@@ -68,10 +70,19 @@ function processTemplate(template, filename, config) {
6870

6971
logResultErrors(result)
7072

71-
const babelify = transform(result.code, { filename: 'file.js' })
73+
const tsconfig = getTsJestConfig(config)
7274

73-
return {
74-
code: babelify.code
75+
if (tsconfig) {
76+
// they are using TypeScript.
77+
const { outputText } = transpileModule(result.code, { tsconfig })
78+
return { code: outputText }
79+
} else {
80+
// babel
81+
const babelify = transform(result.code, { filename: 'file.js' })
82+
83+
return {
84+
code: babelify.code
85+
}
7586
}
7687
}
7788

0 commit comments

Comments
 (0)