如何解决为ES5和ES6目标编译的JavaScript库
我有两个用TypeScript编写的应用程序:
- 首先是用于不受控制的环境的应用程序,因此我们将编译器的目标设置为ES5,以获得更好的兼容性。
- 第二个是将编译器的目标设置为ES6的应用程序。该应用程序可在装有最新版Google Chrome的计算机上运行,因此效果很好。
这里的主要兴趣点是我们的库(一个单独的npm软件包),它具有在两个应用程序中使用的一些常用功能(作为它们的依赖项)。面临的挑战是该库当前将其目标设置为ES5,但是我想像本地类一样开始使用ES6功能,而不必将它们编译为ES6应用程序的ES5。
我能做些什么:
-
我没有为库的已编译源提供一个
dist/
目录,而是可以将其同时编译为ES5和ES6(并具有dist/es5/
和dist/es6/
之类的东西)因此,每个应用程序在导入模块时都可以选择其版本。这可能解决了问题,但对我来说感觉并不那么漂亮。例如,我想在IDE中导入符号会很麻烦,因为每个导出的变量或类型都存在两次。 -
或者,我只能将库编译为ES6,但是在第一个项目中,我需要开始使用babel将库的ES6代码转换为ES5。这可能也解决了问题,但这也意味着应用程序的devstack变得复杂(甚至可能更慢?)。
所以我的问题是:这里的最佳实践是什么?什么是行业标准?
npm注册表中的库始终被编译为ES5,并且整个行业还没有开始使用ES6,这是常见的吗?还是可以在ES6中编写,编译和发布库,这很普遍,但是在没有ES6的环境中,总是希望您在应用程序中使用babel吗?还是我缺少第三种方法?
谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。