boolean: false
experiments 配置是在 webpack 5 中推出,目的是为了给用户赋能去开启并试用一些实验的特性。
Available options:
asyncWebAssembly
:根据更新的规范支持新的 WebAssembly,将 WebAssembly 模块转换为异步模块。当 experiments.futureDefaults 设置为 true 时,默认情况下启用此功能。backCompat
buildHttp
cacheUnaffected
css
futureDefaults
layers
: Enable module and chunk layers.lazyCompilation
outputModule
syncWebAssembly
: Support the old WebAssembly like in webpack 4.topLevelAwait
: 支持顶层 Await Stage 3 提案,当在顶层使用 await
时,将模块转换为异步模块。当 experiments.futureDefaults
设置为 true 时,默认情况下启用此功能。webpack.config.js
module.exports = {
//...
experiments: {
asyncWebAssembly: true,
buildHttp: true,
layers: true,
lazyCompilation: true,
outputModule: true,
syncWebAssembly: true,
topLevelAwait: true,
},
};
为许多 webpack 4 api 启用后向兼容层,并发出弃用警告。
boolean
module.exports = {
//...
experiments: {
backCompat: true,
},
};
启用后,webpack 可以构建以 http(s): 协议开头的远程资源。
(string | RegExp | ((uri: string) => boolean))[]
A shortcut for experiments.buildHttp.allowedUris
.HttpUriOptions
{
allowedUris: (string|RegExp|(uri: string) => boolean)[],
cacheLocation?: false | string,
frozen?: boolean,
lockfileLocation?: string,
upgrade?: boolean
}
// webpack.config.js
module.exports = {
//...
experiments: {
buildHttp: true,
},
};// src/index.js
import pMap1 from https://cdn.skypack.dev/p-map;
// with `buildHttp` enabled, webpack will build pMap1 just like a regular local module
console.log(pMap1);
允许的 URI 列表。
(string|RegExp|(uri: string) => boolean)[]
// webpack.config.js
module.exports = {
//...
experiments: {
buildHttp: {
allowedUris: [
http://localhost:9990/,
https://raw.githubusercontent.com/,
],
},
},
};
定义远程资源的缓存位置。
string
false
// webpack.config.js
module.exports = {
//...
experiments: {
buildHttp: {
cacheLocation: false,
},
},
};
默认情况下,webpack会使用 <compiler-name.>webpack.lock.data/
进行缓存,但您可以通过将其值设置为 false
来禁用缓存。
请注意,在生产构建过程中,由于不会进行网络请求,您应该将 experiments.buildHttp.cacheLocation
目录下的文件提交到版本控制系统中。
冻结远程资源和锁定文件。对锁定文件或资源内容的任何修改都将导致错误。
boolean
定义存储锁定文件的位置。
string
默认情况下,Webpack会生成一个名为<compiler-name>.webpack.lock
的锁定文件。确保将其提交到版本控制系统中。在生产构建期间,Webpack将从锁定文件中构建以http(s)协议开头的模块,并将其缓存到experiments.buildHttp.cacheLocation
下。
指定用来获取远程资源的代理服务器。
string
默认情况下,webpack 会让代理服务器使用 http_proxy(不区分大小写) 环境变量值获取远程资源。然而,你也可以通过 proxy 配置项指定。
检测远程资源的更改并自动升级。
boolean
启用原生 CSS 支持。请注意该实验特性仍处于开发状态并且将会在 webpack v6 中默认启用,你可以在 GitHub 中跟踪进度。
boolean
启用对未更改的模块及仅引用未更改模块的额外内存缓存。
boolean
默认值为futureDefaults
的值。
使用下一个 webpack 主版本的默认值,并在任何有问题的地方显示警告。
webpack.config.js
module.exports = {
//...
experiments: {
futureDefaults: true,
},
};
仅在使用时编译入口点和动态导入。可用于 Web 或 Node.js。
boolean
object
{
// define a custom backend
backend?: ((
compiler: Compiler,
callback: (err?: Error, api?: BackendApi) => void
) => void)
| ((compiler: Compiler) => Promise<BackendApi>)
| {
/**
* A custom client.
*/ client?: string;
/**
* Specify where to listen to from the server.
*/ listen?: number | ListenOptions | ((server: typeof Server) => void);
/**
* Specify the protocol the client should use to connect to the server.
*/ protocol?: "http" | "https";
/**
* Specify how to create the server handling the EventSource requests.
*/ server?: ServerOptionsImport | ServerOptionsHttps | (() => typeof Server);
},
entries?: boolean,
imports?: boolean,
test?: string | RegExp | ((module: Module) => boolean)
}
backend
: 自定义后端。
entries
: 为入口点启用延迟编译。
imports
5.20.0+: 为动态导入启用延迟编译。
test
5.20.0+: 指定应该延迟编译的导入模块。
Available
: 5.17.0+module.exports = {
// …
experiments: {
lazyCompilation: true,
},
};
module.exports = {
// …
experiments: {
lazyCompilation: {
// disable lazy compilation for dynamic imports
imports: false,
// disable lazy compilation for entries
entries: false,
// do not lazily compile moduleB
test: (module) => !/moduleB/.test(module.nameForCondition()),
},
},
};
boolean
启用后,webpack 将尽可能输出 ECMAScript 模块语法。例如,使用 import()
加载代码块,使用 ESM 导出暴露代码块数据等。
module.exports = {
experiments: {
outputModule: true,
},
};