Skip to content

Commit fff35e7

Browse files
yyx990803eddyerburgh
authored andcommitted
fix: es modules usage in TypeScript when no .babelrc is present (#44)
* fix es modules usage in TypeScript when no .babelrc is present * only apply ts module transform if target is not already commonjs
1 parent cd39ea7 commit fff35e7

File tree

6 files changed

+3945
-5887
lines changed

6 files changed

+3945
-5887
lines changed

lib/compilers/babel-compiler.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
const babel = require('babel-core')
22
const loadBabelConfig = require('../load-babel-config.js')
33

4-
module.exports = function compileBabel (scriptContent, inputSourceMap) {
5-
const babelConfig = loadBabelConfig()
4+
module.exports = function compileBabel (scriptContent, inputSourceMap, inlineConfig) {
5+
const babelConfig = inlineConfig || loadBabelConfig()
66

77
if (!babelConfig) {
88
return {

lib/compilers/typescript-compiler.js

+13-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
const tsconfig = require('tsconfig')
22
const ensureRequire = require('../ensure-require')
33
const compileBabel = require('./babel-compiler')
4+
const loadBabelConfig = require('../load-babel-config.js')
45
const cache = require('../cache')
56
const logger = require('../logger')
67

@@ -52,5 +53,16 @@ module.exports = function compileTypescript (scriptContent) {
5253

5354
const res = typescript.transpileModule(scriptContent, tsConfig)
5455

55-
return compileBabel(res.outputText, JSON.parse(res.sourceMapText))
56+
// handle ES modules in TS source code in case user uses non commonjs module
57+
// output and there is no .babelrc.
58+
let inlineBabelConfig
59+
if (tsConfig.compilerOptions.module !== 'commonjs' && !loadBabelConfig()) {
60+
inlineBabelConfig = {
61+
plugins: [
62+
require('babel-plugin-transform-es2015-modules-commonjs')
63+
]
64+
}
65+
}
66+
67+
return compileBabel(res.outputText, JSON.parse(res.sourceMapText), inlineBabelConfig)
5668
}

0 commit comments

Comments
 (0)