Skip to content

Commit

Permalink
fix: es modules usage in TypeScript when no .babelrc is present (#44)
Browse files Browse the repository at this point in the history
* fix es modules usage in TypeScript when no .babelrc is present

* only apply ts module transform if target is not already commonjs
  • Loading branch information
yyx990803 authored and eddyerburgh committed Jan 16, 2018
1 parent cd39ea7 commit fff35e7
Show file tree
Hide file tree
Showing 6 changed files with 3,945 additions and 5,887 deletions.
4 changes: 2 additions & 2 deletions lib/compilers/babel-compiler.js
@@ -1,8 +1,8 @@
const babel = require('babel-core')
const loadBabelConfig = require('../load-babel-config.js')

module.exports = function compileBabel (scriptContent, inputSourceMap) {
const babelConfig = loadBabelConfig()
module.exports = function compileBabel (scriptContent, inputSourceMap, inlineConfig) {
const babelConfig = inlineConfig || loadBabelConfig()

if (!babelConfig) {
return {
Expand Down
14 changes: 13 additions & 1 deletion lib/compilers/typescript-compiler.js
@@ -1,6 +1,7 @@
const tsconfig = require('tsconfig')
const ensureRequire = require('../ensure-require')
const compileBabel = require('./babel-compiler')
const loadBabelConfig = require('../load-babel-config.js')
const cache = require('../cache')
const logger = require('../logger')

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

const res = typescript.transpileModule(scriptContent, tsConfig)

return compileBabel(res.outputText, JSON.parse(res.sourceMapText))
// handle ES modules in TS source code in case user uses non commonjs module
// output and there is no .babelrc.
let inlineBabelConfig
if (tsConfig.compilerOptions.module !== 'commonjs' && !loadBabelConfig()) {
inlineBabelConfig = {
plugins: [
require('babel-plugin-transform-es2015-modules-commonjs')
]
}
}

return compileBabel(res.outputText, JSON.parse(res.sourceMapText), inlineBabelConfig)
}

0 comments on commit fff35e7

Please sign in to comment.