首页 > 解决方案 > 为 ES5 和 ES6 目标编译的 JavaScript 库

问题描述

我有两个用 TypeScript 编写的应用程序:

这里的主要兴趣点是我们的库(一个单独的 npm 包),它具有在两个应用程序中使用的一些通用功能(作为它们的依赖项)。挑战在于该库当前将其目标设置为 ES5,但我想开始使用 ES6 功能,如本机类,而无需将它们转换为 ES5 以用于 ES6 应用程序。

我想到了我可以做的事情:

  1. 我可以开始将它编译为 ES5 和 ES6(并且有类似的dist/东西),而不是为库的编译源提供一个目录,这样每个应用程序都可以在导入模块时选择它的版本。这可能解决了问题,但对我来说并不那么漂亮。例如,我认为在 IDE 中导入符号会很麻烦,因为每个导出的变量或类型都存在两次。dist/es5/dist/es6/

  2. 或者,我只能将库编译为 ES6,但在第一个项目中,我需要开始使用 babel 将库的 ES6 代码转换为 ES5。这可能也解决了问题,但这也意味着应用程序的 devstack 变得复杂(而且可能更慢?)。

所以我的问题是:这里的最佳做法是什么?行业标准是什么?

npm 注册表中的库总是编译为 ES5 并且业界还没有开始使用 ES6 的情况是否普遍?或者说库可以在 ES6 中编写、编译和发布是很常见的,但是你总是希望在你的应用程序中使用 babel 来处理 ES6 不可用的环境?还是我缺少第三种方法?

谢谢!

标签: typescriptecmascript-6babeljspackage.jsonecmascript-5

解决方案


推荐阅读