2016-07-07 61 views
0

我创建了一个由多个ES2015模块组成的组件库。每个都是相对独立的,但是有一个外部构建系统来帮助促进集成测试和部署。 其中一个模块具有核心模块和一组可选子模块。该代码结构看起来松散,如:webpack babel loader两次导入相同的模块

root 
    .\build\... 
    .\src 
    .\bundle1 
     .\build\... 
     .\src 
     .\core.js 
     .\submodules\ 
      .\a.js 
      .\b.js 

由于历史的原因,有几个子模块取决于核心模块上,就目前而言,必须用它来部署,所以最终被一个有点循环依赖。如前所述,每个模块都是相对独立的,因此它有自己的构建系统。当使用本地构建时,一切都显示正常。当“主”构建系统被使用时,问题就会变得明显。当它启动相同的构建时,核心块最终会生成两次。内部子模块将自己附加到第一个实例,但第二个实例实际上被导出,使得整个卡片房子变得毫无用处。 这似乎不是一个webpack的问题,因为当我创建演示应用时,我没有使用babel,并且没有出现错误。

道歉了那么久才切入正题...... 我的问题是,有什么明显的是我丢失可能会造成这一点,或者是有错误的地方通天/的WebPack,巴贝尔-loader?

由于这有点复杂,我创建了this reference project而不是在这里内联源码。如上所述,/ develop不显示这个问题,因为它不使用babel。 add-babel分支的确如此。

回答

0

原来,是的,我错过了可能应该是显而易见的事情。由于bundle1的配置从较高的级别打开,因此显然需要context。 TBH我不确定我是否完全赞同这一点,因为它在使用commonJS时有效,但在运输时不起作用...

+0

链接指示当涉及动态导入时使用上下文。 –

+0

是的。在这种情况下,我的问题是我不知道'context'是一个配置选项。我责备WebPack的godawful文件:第 –