2017-02-20 63 views
1

所以code splitting是创造不同的包的技术 - 使应用程序,供应商等等的WebPack使用厂商块node_modules没有明确说明他们

我知道我想在我的vendor束而只是按照惯例.. 。

任何

import x from 'name'; 
import 'name'; 

这些需要在vendor,因为(我认为他们是)从node_modules清楚地到来。

但是,我只看到明确说明这一点的例子。

有没有办法使用约定?

如果没有,我可以建立一个插件来做到这一点(这个插件可以进入你的依赖部分package.json)?

回答

3

你可以做的是这样的:

const pkg = require('./package.json');

,并在您的配置:

{ 
    entry: { 
     vendor: Object.keys(pkg.dependencies) // use node_module dependencies 
    }, 
    plugins: [ 
    new webpack.optimize.CommonsChunkPlugin({ 
     name: "vendor" 
    }) 
    ] 
} 

编辑: 似乎有更好的方式来做到这一点。人们可以在CommonsChunkPlugin插件中使用minChunks属性。你可以通过一个功能都有,例如:

plugins: [ 
    new webpack.optimize.CommonsChunkPlugin({ 
     name: "vendor", 
     minChunks: ({ resource }) => { 
      return resource && resource.match(/\.js$/) && resource.indexOf('node_modules') >= 0; 
     } 
    }) 
] 

通过这样做,你不需要靠的package.json列表的WebPack上只考虑在项目中使用的依赖关系。整齐。

+0

感觉有点奇怪做到这一点,但作品 - 我很好:) –

+0

@CallumLinington检查我更新的答案,我发现另一种方式 –