Webpack -p 与 --mode=production

Webpack -p vs --mode=production

正如我从 webpack 繁琐的文档中得到的 here webpack -p 将设置

  1. --为DefinePlugin
  2. 定义process.env.NODE_ENV="'production'"
  3. --将包含 TerserPlugin
  4. 的优化最小化标志

正如我从同一文档中得到的那样 here webpack --mode=production 将设置

  1. --为DefinePlugin
  2. 定义process.env.NODE_ENV="'production'"
  3. TerserPlugin
  4. FlagDependencyUsagePlugin
  5. FlagIncludedChunksPlugin
  6. ModuleConcatenationPlugin
  7. NoEmitOnErrorsPlugin
  8. OccurrenceOrderPlugin
  9. SideEffectsFlagPlugin

(粗体项是两个不同标志之间的共同行为。)

我可以将 --mode=production 视为 -p 的 "full" 版本吗?互联网上的一些指南使用 -p,其他使用 --mode=production,有些甚至两者都使用。

也很高兴知道 --mode=production--mode production 是否有任何区别,因为对我来说这两个版本都工作得很好

此外,还有一个线程 ,它说 -p "Run commands in parallel." 是节点的标志,与 webpack 的 -p 同名?

我正在使用 webpack ^4.41.2

Shall I consider --mode=production as a "full" version of -p? Some guides on the internet use -p, other use --mode=production and some even use both of them.

根据 CLI > Shortcuts 下的文档 -p 类似于 --mode=production:

(取自此处的文档图片:https://webpack.js.org/api/cli/#shortcuts

因此,无论是使用其中之一(还是两者都使用——但不推荐这样做,因为可能会引起其他人的混淆),您不应该在 webpack 的输出中看到任何差异。

您可以通过 运行 webpack 确认这一点,首先使用 -p,注意输出文件的哈希值,然后对 --mode=production 执行相同操作,并比较哈希值。

这是我 运行 使用单个条目文件 index.js 进行的快速测试 console.log("HELLO"):

如您所见,这两种情况的哈希值都是 de140f9e5092685464e8

诚然,这里的条目文件可能没有足够大的表面积来具体证明 -p--mode production 产生相同的结果,但它应该足以证明概述的方法。


Also it would be great to know if --mode=production has any difference versus --mode production because for me both version work absolutely fine

两种指定标志及其值的方式没有区别:

$ webpack --mode production
$ webpack --mode=production # equivalent to the above

无论 webpack 使用什么标志解析库(甚至可能是定制的)都会为你处理这两种情况,所以你可以采用你喜欢的任何一种方法。这对于 CLI 来说是很常见的行为。


Also, there is a thread here, that says that -p "Run commands in parallel." Is that a flag to node, that has the same name as -p for webpack?

我相信这里引用的 -p 标志是针对 npm-run-all 库的,因为它在答案的示例中用作 npm 脚本,如下所示:

"test": "npm-run-all -p -r webdriver-start http-server protractor"