使用整个npm模块创建异步WebPack CommonsChunk

时间:2017-02-12 23:47:05

标签: javascript webpack webpack-2

我尝试使用react-dnd和两个react-dnd后端创建一个异步公共块,并使用所有剩余节点实用程序(node_modules中的任何内容)创建一个。

代码如下。我的react-dnd捆绑包确实包含了这三个npm实用程序,但这就是它的全部内容。它没有那些实用程序所依赖的东西,比如dnd-core等。这些依赖关系在catch-all包中,all-node

什么是实现我所寻找的最直接的方式?

new webpack.optimize.CommonsChunkPlugin({
    filename: 'all-node.js',
    async: 'all-node',
    minChunks(module, count) {
        var context = module.context;
        return context && context.indexOf('node_modules') >= 0;
    },
}),

new webpack.optimize.CommonsChunkPlugin({
    chunks: ['react-dnd'],
    filename: 'react-dnd.js',
    async: 'react-dnd',
    children: true,
    minChunks(module, count) {
        var context = module.context;
        var targets = ['react-dnd', 'react-dnd-html5-backend', 'react-dnd-touch-backend']
        return count > 1 || (context && context.indexOf('node_modules') >= 0 && targets.find(t => new RegExp('\\\\' + t + '\\\\', 'i').test(context)));
    },
}),

1 个答案:

答案 0 :(得分:0)

我现在意识到这是一个根本不好的主意。 npm模块的依赖关系可以在彼此之间共享,因此强制地将react-dnd的完全依赖树粘贴到一个包中,例如,在另一个包中使用react-router的完整树,将导致其树的并集之间的重复