使用npm释放es6和es5源

我正在开发两个使用npm注册的节点包,并使用es6语法。 每个包只有一个es6模块导出一个类。

  • A没有依赖关系
  • B取决于A

A类

 export default class A {...} 

B类

 import A from 'A' export default class B {...} 

每个包都有以下结构modules/ index.js (es6 source) index.js (commonjs source)

  • 源代码在es6/index.js
  • 它使用Babel转译成es5 / commonjs

我想给我的A和B包的用户select使用es6(通过导入B类本身会导入一个es6类而不是es5 A)或es5源(通过要求es5函数B本身需要es5函数A):什么是实现它的最好方法?

我会做的是有两个单独的版本(两个单独的github项目)

  1. 一个es5作为最低要求(es5 A和es5 B作为编译代码)。
  2. 另一个有es6作为最低要求(与模块es6 A和es6B)。

这样做的理由是,目前最好避免将尚未过渡到es6文件的人员与es6文件混淆。 未来一两年内,es5版本就不再需要了。 您希望能够在不显着改变文件组织的情况下停止对es5版本的支持。

在es6版本中,考虑命名您的文件index.es6.js。 这将有助于防止在不支持的环境中意外引用es6代码。