这些是 webpack 支持的剩余配置选项。
object
boolean: false
设置 require.amd
或 define.amd
的值。将 amd
设置为 false
将禁用 webpack 的 AMD 支持。
webpack.config.js
module.exports = {
//...
amd: {
jQuery: true,
},
};
某些为 AMD 编写的流行模块,特别是 jQuery 1.7.0 到 1.9.1 版本,仅当加载器表明已为页面中包含的多个版本采取了特殊考量时,才会注册为 AMD 模块。
这些考量包括将注册限制到特定版本的能力,或支持具有不同定义模块的不同沙盒。
此选项允许您将模块查找的键设置为一个真值。事实上,webpack 中的 AMD 支持无论如何都会忽略定义的名称。
boolean = false
在第一次错误时退出,而不是容忍它。默认情况下,webpack 会在终端中将这些错误以红色显示,在使用 HMR 时也会在浏览器控制台中显示,但会继续打包。要启用它
webpack.config.js
module.exports = {
//...
bail: true,
};
这将强制 webpack 退出其打包进程。
[string]
定义所有依赖的同级配置的 name
列表。依赖的配置需要首先编译。
在 watch 模式下,当满足以下条件时,依赖项将使编译器失效:
请记住,当前配置不会编译,直到其依赖项完成。
webpack.config.js
module.exports = [
{
name: 'client',
target: 'web',
// …
},
{
name: 'server',
target: 'node',
dependencies: ['client'],
},
];
[RegExp, function (WebpackError, Compilation) => boolean, {module?: RegExp, file?: RegExp, message?: RegExp}]
告诉 webpack 忽略特定的警告。这可以通过 RegExp
、一个自定义 function
(根据原始警告实例选择警告,该实例将 WebpackError
和 Compilation
作为参数并返回一个 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,
],
};
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;
};
string
配置的名称。在加载多个配置时使用。
webpack.config.js
module.exports = {
//...
name: 'admin-app',
};
number = 100
限制并行处理的模块数量。可用于微调性能或获取更可靠的性能分析结果。
boolean
捕获应用程序的“性能分析”报告,包括统计数据和提示,然后可以使用 Analyze 工具进行分析。它还会输出模块时间摘要。
string
指定用于读取最后一组记录的文件。这可用于重命名记录文件。请参见下面的示例。
string
指定记录应写入的位置。以下示例展示了如何将此选项与 recordsInputPath
结合使用来重命名记录文件
webpack.config.js
const path = require('path');
module.exports = {
//...
recordsInputPath: path.join(__dirname, 'records.json'),
recordsOutputPath: path.join(__dirname, 'newRecords.json'),
};
string
使用此选项生成一个 JSON 文件,其中包含 webpack “记录”——用于在多次构建之间存储模块标识符的数据片段。您可以使用此文件来跟踪模块在不同构建之间的变化。要生成一个文件,请指定一个位置
webpack.config.js
const path = require('path');
module.exports = {
//...
recordsPath: path.join(__dirname, 'records.json'),
};
如果您有一个利用代码分割的复杂设置,记录尤其有用。这些数据可用于确保分割的包实现您所需的缓存行为。
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,
},
},
};
object = { hash boolean = true, timestamp boolean = true }
使用持久化缓存时构建依赖项的快照。
hash
: 比较内容哈希值以确定失效(比 timestamp
更昂贵,但更改频率较低)。timestamp
: 比较时间戳以确定失效。hash
和 timestamp
都是可选的。
{ hash: true }
: 适用于 CI 缓存,它使用新的检出(不保留时间戳并使用哈希值)。{ timestamp: true }
: 适用于本地开发缓存。{ timestamp: true, hash: true }
: 适用于上述两种情况。首先比较时间戳,这很划算,因为 webpack 无需读取文件来计算它们的哈希值。内容哈希值仅在时间戳相同时才会进行比较,这会导致首次构建时性能略有下降。(RegExp | string)[]
由包管理器管理且其路径中包含版本或哈希值的路径数组,因此所有文件都是不可变的。
如果您使用正则表达式,请确保将路径包装在捕获组中。
(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))(@.+?[\\/])?.+?)[\\/]/,
],
},
};
(RegExp | string)[]
不由包管理器管理且其内容可能更改的路径数组。
如果您使用正则表达式,请确保将路径包装在捕获组中。
object = {hash boolean = true, timestamp boolean = true}
构建模块的快照。
hash
: 比较内容哈希值以确定失效(比 timestamp
更昂贵,但更改频率较低)。timestamp
: 比较时间戳以确定失效。object = {hash boolean = true, timestamp boolean = true}
解析请求的快照。
hash
: 比较内容哈希值以确定失效(比 timestamp
更昂贵,但更改频率较低)。timestamp
: 比较时间戳以确定失效。object = {hash boolean = true, timestamp boolean = true}
使用持久化缓存时解析构建依赖项的快照。
hash
: 比较内容哈希值以确定失效(比 timestamp
更昂贵,但更改频率较低)。timestamp
: 比较时间戳以确定失效。