为ES5和ES6目标编译的JavaScript库

时间:2020-10-07 12:14:47

标签: typescript ecmascript-6 babeljs package.json ecmascript-5

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

  • 首先是用于不受控制的环境的应用程序,因此我们将编译器的目标设置为ES5,以获得更好的兼容性。
  • 第二个是将编译器的目标设置为ES6的应用程序。该应用程序可在装有最新版Google Chrome的计算机上运行,​​因此效果很好。

这里的主要兴趣点是我们的库(一个单独的npm软件包),它具有在两个应用程序中使用的一些常用功能(作为它们的依赖项)。面临的挑战是该库当前将其目标设置为ES5,但是我想像本地类一样开始使用ES6功能,而不必将它们编译为ES6应用程序的ES5。

我能做些什么:

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

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

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

npm注册表中的库始终被编译为ES5,并且整个行业还没有开始使用ES6,这是常见的吗?还是可以在ES6中编写,编译和发布库,这很普遍,但是在没有ES6的环境中,总是希望您在应用程序中使用babel吗?还是我缺少第三种方法?

谢谢!

0 个答案:

没有答案
相关问题