当 webpack 条目属性被赋予一个以字符串数组作为值的对象时,这意味着什么?

Cod*_*ein 5 webpack

Webpack 文档允许将带有字符串数组的对象传递给entryWebpack 配置的属性。

例如

Usage: entry: {[entryChunkName: string]: string|Array<string>}
Run Code Online (Sandbox Code Playgroud)

然而,文档没有讨论这实际上意味着什么。这是否相当于多个入口点?这会导致任何不同的行为吗?

这是它在项目serverless/aws-nodejs-typescript 中使用的示例。

Pla*_*256 6

可以通过 3 种方式定义入口点:

1)

entry: {
 main: './src/index.js',
 dashboard: './dashboard/dashboard.js'
}
Run Code Online (Sandbox Code Playgroud)

这将为对象中的每个属性创建一个文件。

2)

entry: './src/index.js'
Run Code Online (Sandbox Code Playgroud)

通常的配置,没有太大的不同。

3)

entry: ['@babel/polyfill', 'src/index.js', 'otherfile', 'other something']
Run Code Online (Sandbox Code Playgroud)

定义为对象和定义为数组的唯一区别在于,作为一个对象,webpack 创建了多个“主”包文件,这也是一种代码拆分策略。

当定义为数组时,webpack 会在所有这些文件中查找依赖项,并将它们放在同一个“入口”文件中,基本上将其归类为 1 个单个文件。

您链接的那个项目发生的情况是 1 + 3 的组合,我们可以说它是“4”。这会为每个条目创建一个对象,并且该对象上的每个条目都由一组不同的其他库组成。

  • “_入口点可以通过 3 种方式定义:_”。正如我在问题中指出的那样,似乎还有第四种方法。也就是说,您可以向“entry”传递一个由字符串数组组成的对象。您在答案中没有提到该选项 (2认同)