使用npm释放es6和es5源

Tho*_*och 5 javascript node.js ecmascript-6 babeljs

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

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

A级

export default class A {...}
Run Code Online (Sandbox Code Playgroud)

B级

import A from 'A'

export default class B {...}
Run Code Online (Sandbox Code Playgroud)

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

  • 源代码在 es6/index.js
  • 使用Babel将其转换为es5/commonjs

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

wid*_*ged 1

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

  1. 以 es5 作为最低要求的一种(以 es5 A 和 es5 B 作为转译代码)。
  2. 另一种以 es6 作为最低要求(带有模块 es6 A 和 es6B)。

原因是,目前最好避免将尚未过渡到 es6 的人与 es6 文件混淆。未来一两年之内,es5版本将变得不必要。您希望能够停止对 es5 版本的支持而不显着更改文件组织。

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