我正在查看this webpack配置文件,我不太明白如果给出了多个入口点会发生什么(如下例所示)。
是否将入口点作为依赖项搜索的起点,然后生成的依赖项的并集最终会出现在bundle中?
'use strict';
var webpack = require('webpack');
module.exports = {
entry: [
'webpack/hot/only-dev-server',
'./index.js'
],
output: {
path: __dirname + '/build',
publicPath: __dirname + "/build/",
filename: 'bundle.js'
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin()
]
};
我看了doc,但没有解释上面配置的内容。
此外, here写道:
如果传递数组:启动时加载所有模块。最后 一个出口。
entry: ["./entry1", "./entry2"]
加载模块和导出模块有什么区别?
答案 0 :(得分:13)
完全!!
正如您在this示例中所看到的,使用多个入口点,您可以从选择的入口点开始创建2个或更多个束。但是,您可能会在捆绑包中重复(或更多)您的依赖项代码。此配置目前无需任何优化即可执行此任务。
在链接的示例中,它使用公共块插件创建另一个包含公共条目代码的包(在其他包之前包含),对于多页webapp非常有用。
如果要添加公共块插件,只需将此代码添加到配置中:
plugins: [
new CommonsChunkPlugin({
filename: "commons.js",
name: "commons"
})
]
在this页面上可以找到更多示例(如多个公共块)
关于输入参数:
entry: 'entry.js'
),webpack会从它开始创建一个包。entry: ['entry1.js', 'entry2.js']
),它会创建一个从entry2开始的包,名为entry2,并加载(和解析)entry1。entry: {entry1: 'entry1.js', entry2: 'entry2.js'}
),它会从条目开始创建两个不同的包,并命名为对象的入口密钥。entry: {entry1: 'entry1.js', entry2: ['entry2_1.js', 'entry2_2.js'] }
这样的混合模式,webpack会从entry1.js开始创建一个名为entry1的包,而另一个名为entry2的包来自entry2_2.js,但加载firt entry2_1.js。请注意,传递一个条目数组,只导出last,其他js只被加载。
答案 1 :(得分:0)
嗯,它确实处理每个入口点。它将包含它需要的所有依赖项,这意味着如果两个入口点都使用jquery。两者都会把它变成自己的捆绑。但如前所述,您可以使用commonchunks插件。它将在某一时刻(因为你可以决定所需的数量)将多个使用的模块移动到某个公共模块