Webpack在供应商块中使用node_modules而没有明确说明它们

时间:2017-02-20 16:57:00

标签: javascript webpack

所以code splitting是创建不同包的技术 - 所以app,vendor等......

我知道我想要在我的vendor捆绑包中,但只能按惯例...

任何

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

这些必须在vendor,因为(我认为它们)明显来自node_modules

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

有没有办法使用惯例?

如果没有,我可以构建一个插件来执行此操作(此插件可以进入package.json的依赖项部分吗?)

1 个答案:

答案 0 :(得分: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将只考虑项目中使用的依赖项。整齐。