1. 去掉转换后的exports
由于phantomjs发现不了exports,所以需要把转换后文件的第一行去掉。方法是在ts文件最上面加上export = 0;
。
//issue: don’t add Object.defineProperty(exports, “__esModule”, { value: true });
//https://github.com/Microsoft/TypeScript/issues/14351
2. noEmit
"noEmit":true
这个配置就不会产生输出文件了。
3. esModuleInterop配置
1 | { |
当我们import xx from ‘module’时,等价于var xx = require(‘module’).default。
当我们import {A,B,C} from ‘module’时,等价于 var {A,B,C} = require(‘module’)
当我们export modue时,等价于 export.module = module
当我们export default module时, 等价于 export.default = module
当我们export = module时, 就是最特殊的情况,因为没有default了,也没有其它的export.xx了。
总结一下,node legacy没有那个default的概念,但是用TypeScript时有了这个default的概念,为了保持兼容性,就把这个esModuleInterop
设置为true,起的效果就是当遇到没有default的情况,给它用{deault: moduel}包装下,那么都会有default这个值了,避免了default是undefined的情况。