【问题标题】:Releasing es6 and es5 sources with npm使用 npm 发布 es6 和 es5 源
【发布时间】:2015-09-16 23:49:34
【问题描述】:

我正在开发两个使用 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 包的用户选择使用 es6(通过导入 B 类,它本身将导入 A es6 类而不是 es5 A)或 es5 源(通过需要 es5 函数 B 本身需要 es5 函数A):实现它的最佳方法是什么?

【问题讨论】:

  • 你到底有什么不清楚的地方? B 的导入语句应该是什么样子的?
  • 不。我希望 es6 B 导入 es6 A,并将 es5 B 转译为需要转译的 es5 A。我正在寻求有关如何构建和发布我的代码的一般建议。我找到了一个我将分享的解决方案:在 Babel 中使用 resolveModuleSource 选项。但我想知道其他人是怎么做的。
  • 正如@Bergi 所建议的,rollup 是非常合适的解决方案

标签: javascript node.js ecmascript-6 babeljs


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-16
    • 2016-07-25
    • 2022-01-11
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    相关资源
    最近更新 更多