2017-03-02 45 views
4

我想围绕webpack的CommonsChunkPlugin的配置选项进行打包。这些选项包括一个布尔值children属性。你能解释一下当这个设置为true时会发生什么,而当它设置为false时呢? This documentation说:“如果true公民块的所有孩子都被选中,”但该页面从来没有定义“公地块的孩子”。孩子们是否包含公用块?或者可能公共组块包含的模块?此外,“选择”孩子的含义是什么?什么是“儿童”在CommonsChunkPlugin config中提到

+0

页面从未定义的“选择”要么... –

回答

4

我认为这里的措辞有点误导。如果你看相关的example on the same documentation page它变得更清晰。

一旦你开始使用代码分裂,术语块可以参考

  • 您的输入块,其中有被分割点在你的代码中创建的孩子,
  • 大块你分割点创建(即您输入的孩子)或
  • 您与CommonsChunkPlugin合并的公用块。

现在,你可以在文档中看到,一个公共块你合并代码与CommonsChunkPlugin可以是一个新的公共块或现有的块。后者是通过指定现有块的名称作为CommonsChunkPlugin选项中公共块的“名称”属性来实现的。但是,根据我的经验,您只能指定现有的块,它们是应用程序的入口点。例如,如果您的应用程序入口点具有名称“app”,则以下CommonsChunkPlugin选项应该将“app”子元素中的通用代码合并到“app”块中。

new webpack.optimize.CommonsChunkPlugin({ 
    name: 'app', 
    children: true 
}) 

相反,如果你想创建一个新的公共块为“应用程序”孩子们的公共代码,你会用下面的代码这样做:

new webpack.optimize.CommonsChunkPlugin({ 
    name: 'app', 
    filename: 'common-code.js', 
    children: true, 
    async: true 
}) 

说回从如果为true公地块的所有孩子都选择了文档

您的报价

“commons chunk”这个词应该可能被“entry chunk”取代。

+0

你碰巧知道什么是“选择”是指在这个上下文中的含义? –

+1

我的理解是,“select”是指在确定要移入公共块的模块时是否考虑子块。例如,你有一个具有多个分割点的应用程序。每个分割点都会创建一个子块。您决定将公共逻辑提取到公共块中。通过指定“children:true”,您告诉插件自动将所有子块中的模块提取到公用块中,因为它们满足由minChunks选项确定的条件。因此,所有儿童组块都被选为公共组块。 – Felix

+0

所以,使用'children:true',如果我有两个使用分裂点异步加载的块(据我所知,它是子块),但是这两个块都使用相同的依赖关系,这种依赖关系)将被“选择”为公共块(即同步加载)。 –