其他选项

这些是 webpack 支持的剩余配置选项。

amd

object boolean: false

设置 require.amddefine.amd 的值。将 amd 设置为 false 将禁用 webpack 的 AMD 支持。

webpack.config.js

module.exports = {
  //...
  amd: {
    jQuery: true,
  },
};

某些为 AMD 编写的流行模块,特别是 jQuery 1.7.0 到 1.9.1 版本,仅当加载器表明已为页面中包含的多个版本采取了特殊考量时,才会注册为 AMD 模块。

这些考量包括将注册限制到特定版本的能力,或支持具有不同定义模块的不同沙盒。

此选项允许您将模块查找的键设置为一个真值。事实上,webpack 中的 AMD 支持无论如何都会忽略定义的名称。

bail

boolean = false

在第一次错误时退出,而不是容忍它。默认情况下,webpack 会在终端中将这些错误以红色显示,在使用 HMR 时也会在浏览器控制台中显示,但会继续打包。要启用它

webpack.config.js

module.exports = {
  //...
  bail: true,
};

这将强制 webpack 退出其打包进程。

dependencies

[string]

定义所有依赖的同级配置的 name 列表。依赖的配置需要首先编译。

在 watch 模式下,当满足以下条件时,依赖项将使编译器失效:

  1. 依赖项已更改
  2. 某个依赖项正在编译或已失效

请记住,当前配置不会编译,直到其依赖项完成。

webpack.config.js

module.exports = [
  {
    name: 'client',
    target: 'web',
    // …
  },
  {
    name: 'server',
    target: 'node',
    dependencies: ['client'],
  },
];

ignoreWarnings

[RegExp, function (WebpackError, Compilation) => boolean, {module?: RegExp, file?: RegExp, message?: RegExp}]

告诉 webpack 忽略特定的警告。这可以通过 RegExp、一个自定义 function(根据原始警告实例选择警告,该实例将 WebpackErrorCompilation 作为参数并返回一个 boolean 值)或一个包含以下属性的 object 来完成

  • file : 用于选择警告的源文件的 RegExp。
  • message : 用于选择警告消息的 RegExp。
  • module : 用于选择警告的源模块的 RegExp。

ignoreWarnings 必须是上述任意或全部项的 array

module.exports = {
  //...
  ignoreWarnings: [
    {
      module: /module2\.js\?[34]/, // A RegExp
    },
    {
      module: /[13]/,
      message: /homepage/,
    },
    /warning from compiler/,
    (warning) => true,
  ],
};

loader

object

将自定义值暴露到 加载器上下文 中。

例如,您可以在加载器上下文中定义一个新变量

webpack.config.js

module.exports = {
  // ...
  loader: {
    answer: 42,
  },
};

然后使用 this.answer 在加载器中获取其值

custom-loader.js

module.exports = function (source) {
  // ...
  console.log(this.answer); // will log `42` here
  return source;
};

name

string

配置的名称。在加载多个配置时使用。

webpack.config.js

module.exports = {
  //...
  name: 'admin-app',
};

parallelism

number = 100

限制并行处理的模块数量。可用于微调性能或获取更可靠的性能分析结果。

profile

boolean

捕获应用程序的“性能分析”报告,包括统计数据和提示,然后可以使用 Analyze 工具进行分析。它还会输出模块时间摘要。

recordsInputPath

string

指定用于读取最后一组记录的文件。这可用于重命名记录文件。请参见下面的示例。

recordsOutputPath

string

指定记录应写入的位置。以下示例展示了如何将此选项与 recordsInputPath 结合使用来重命名记录文件

webpack.config.js

const path = require('path');

module.exports = {
  //...
  recordsInputPath: path.join(__dirname, 'records.json'),
  recordsOutputPath: path.join(__dirname, 'newRecords.json'),
};

recordsPath

string

使用此选项生成一个 JSON 文件,其中包含 webpack “记录”——用于在多次构建之间存储模块标识符的数据片段。您可以使用此文件来跟踪模块在不同构建之间的变化。要生成一个文件,请指定一个位置

webpack.config.js

const path = require('path');

module.exports = {
  //...
  recordsPath: path.join(__dirname, 'records.json'),
};

如果您有一个利用代码分割的复杂设置,记录尤其有用。这些数据可用于确保分割的包实现您所需的缓存行为。

snapshot

object

snapshot 选项决定了文件系统快照如何创建和失效。

webpack.config.js

const path = require('path');
module.exports = {
  // ...
  snapshot: {
    managedPaths: [path.resolve(__dirname, '../node_modules')],
    immutablePaths: [],
    unmanagedPaths: [],
    buildDependencies: {
      hash: true,
      timestamp: true,
    },
    module: {
      timestamp: true,
    },
    resolve: {
      timestamp: true,
    },
    resolveBuildDependencies: {
      hash: true,
      timestamp: true,
    },
  },
};

buildDependencies

object = { hash boolean = true, timestamp boolean = true }

使用持久化缓存时构建依赖项的快照。

  • hash: 比较内容哈希值以确定失效(比 timestamp 更昂贵,但更改频率较低)。
  • timestamp: 比较时间戳以确定失效。

hashtimestamp 都是可选的。

  • { hash: true }: 适用于 CI 缓存,它使用新的检出(不保留时间戳并使用哈希值)。
  • { timestamp: true }: 适用于本地开发缓存。
  • { timestamp: true, hash: true }: 适用于上述两种情况。首先比较时间戳,这很划算,因为 webpack 无需读取文件来计算它们的哈希值。内容哈希值仅在时间戳相同时才会进行比较,这会导致首次构建时性能略有下降。

immutablePaths

(RegExp | string)[]

由包管理器管理且其路径中包含版本或哈希值的路径数组,因此所有文件都是不可变的。

如果您使用正则表达式,请确保将路径包装在捕获组中。

managedPaths

(RegExp | string)[]

由包管理器管理且可以信任不会被其他方式修改的路径数组。

如果您使用正则表达式,请确保将路径包装在捕获组中,以便 webpack 可以提取路径。例如,这是 webpack 内部用于匹配 node_modules 目录的 RegExp

/^(.+?[\\/]node_modules)[\\/]/

managedPaths 的一个常见用例是排除 node_modules 中的某些文件夹,例如,您希望 webpack 知道 node_modules/@azure/msal-browser 文件夹中的文件预期会更改,这可以通过如下正则表达式完成

module.exports = {
  snapshot: {
    managedPaths: [
      /^(.+?[\\/]node_modules[\\/](?!(@azure[\\/]msal-browser))(@.+?[\\/])?.+?)[\\/]/,
    ],
  },
};

unmanagedPaths

5.90.0+

(RegExp | string)[]

不由包管理器管理且其内容可能更改的路径数组。

如果您使用正则表达式,请确保将路径包装在捕获组中。

module

object = {hash boolean = true, timestamp boolean = true}

构建模块的快照。

  • hash: 比较内容哈希值以确定失效(比 timestamp 更昂贵,但更改频率较低)。
  • timestamp: 比较时间戳以确定失效。

resolve

object = {hash boolean = true, timestamp boolean = true}

解析请求的快照。

  • hash: 比较内容哈希值以确定失效(比 timestamp 更昂贵,但更改频率较低)。
  • timestamp: 比较时间戳以确定失效。

resolveBuildDependencies

object = {hash boolean = true, timestamp boolean = true}

使用持久化缓存时解析构建依赖项的快照。

  • hash: 比较内容哈希值以确定失效(比 timestamp 更昂贵,但更改频率较低)。
  • timestamp: 比较时间戳以确定失效。

延伸阅读

15 贡献者

sokraskipjackterinjokesbyzykliorgreenbvansosninEugeneHlushkoskovyrishabh3112niravasherNeob91chenxsanu01jmg3jamesgeorge007snitin315