为什么使用带有ts-loader的babel-loader?

Yur*_*riy 12 typescript ts-loader babel-loader

有一个TypeScript,Babel,React和Karma示例.

Webpack配置包含带有ts-loader .tsx?文件的babel-loader .

请解释为什么需要它?为什么ts-loader不够用?

Fat*_*zli 24

ts-loader:转换typescript (es6)javascript (es6)

babel-loader:转换javascript (es6)javascript (es5)

Typescript没有做polyfills,这babel确实.如果你写的客户端代码es6,并希望它在现代浏览器上运行,你可能需要babelpolyfills.

服务器端代码不太合理 - 只需使用最新node版本即可获得es6支持.但是babel仍然提供了一些tsc不喜欢的好东西- 比如缓存,或者是一系列非常有用的插件.

它不是必要的,而是一种将它们全部用于它们的实践.

  • tsconfig 的编译器选项中的 'target' 选项也可以是 es5。所以你错了 (7认同)
  • Babel 7现在可以使用babel-preset-typescript将TS转换为JS,并且TS仅处理类型检查.https://github.com/Microsoft/TypeScript-Babel-Starter (7认同)
  • @Yuriy 她没有错。你需要 ES6 模块来做 tree-shaking。 (4认同)
  • 我不明白。我们的目标是将代码转换为 ES5(模块除外)。Babel 给出了这样的可能性。如果我们只使用 typescript 配置就可以达到相同的结果,为什么我们应该使用 babel 呢? (3认同)
  • 据我所知,我们手动使用babel-polyfills。是不是 您能否展示使用对打字稿文件有用的大量插件的示例? (2认同)
  • 仅供参考@Yuriy的设置(目标es5 /模块es6)是我使用的。Webpack本身可以捆绑ES6模块,因此本质上并不需要真正的Babel。使用此设置时,在进行生产构建时,Webpack默认会或多或少地摇晃树。 (2认同)