如何使用es2015模块打包库

时间:2018-01-02 13:49:06

标签: javascript module ecmascript-6

假设我使用export语句创建了一个由一堆es2015模块文件组成的库,我怎样才能将它们打包在一个.js文件中以便提供库?应保留es2015模块,以便该库的用户仍可使用import - 语句导入导出的内容。

即想象有两个模块:

foo.js:

export default class Foo {...}

bar.js:

export default class Bar{...}

我想将它们打包在一起......让我们说magic-lib.js,然后我们就像这样:

使用魔法-lib.js:

import Foo from 'magic-lib'
...

怎么可以这样做?

顺便说一句:我已经尝试使用rollup-js将我的lib打包到一个文件中,但是我无法获得仍然使用exports的结果。除此之外,我最喜欢的解决方案是一些香草js ......

1 个答案:

答案 0 :(得分:0)

如果有人感兴趣,我现在可以使用rollup.js与Options.format= 'es'和插件rollup-plugin-multi-entry捆绑包。我的错误是我使用了export default并期望这可以在单个捆绑文件中使用多个导出。 rollup-plugin-mutliy-entry并没有将它们保存在最终的bundle中。但是使用非默认导出有效。

因此,从更高级别来看,我现在为rollup.js创建的每个模块都有一个js文件。这个module-js文件由几个类组成。只导出那些应该从库外部使用的类(公共接口)。

Addionally我将所有module-js-files捆绑在一个大的app-js文件(汇总汇总)中,该文件与options.format = 'iife'捆绑在一起,仅用作可执行应用程序包。浏览器。

-Module-A.js 
 |- class InternalTool
 |- export class A 

-Module-B.js
-Module-C.js

-App.js
|- Module A
|- Module B
|- Module C

通过这种方式,我可以创建可以组合到应用程序的强分离和可重用模块。