支持的浏览器
从 v1.1.10 开始,你现在可以使用 browserslist 自动配置支持的浏览器。
用法
.swcrc
{
"env": {
"targets": {
"chrome": "79"
},
"mode": "entry",
"coreJs": "3.22"
}
}选项
targets
string | Array<string> | { [string]: string },默认为 {}。
描述你项目支持/目标的环境。这可以是一个 browserslist-compatible (opens in a new tab) 查询 (有局限性) (opens in a new tab):
.swcrc
{
"env": {
"targets": "> 0.25%, not dead"
}
}或者是一个对象,表示要支持的最低环境版本:
.swcrc
{
"env": {
"targets": {
"chrome": "58",
"ie": "11"
}
}
}示例环境:
chromeoperaedgefirefoxsafariieiosandroidnodeelectron
如果未指定 targets,SWC 会使用 browserslist 获取目标信息。
path
string,默认为当前目录。path指定加载browserslist模块和任何 browserslist 配置文件的目录。例如,.browserslistrc或 package.json 中的browserslist字段。如果你的构建系统不在项目的根目录中,这可能很有用。
mode
string,默认为undefined。- 可能的值:
usage,entry,undefined(这与 Babel 的useBuiltIns(opens in a new tab) 匹配)
⚠️
usage 模式目前不如 Babel 高效,如果你有类似 "foo"["a" + "t"]() 的用法。
SWC 不会评估表达式 "a" + "t",也不会包含 String.prototype.at 的 polyfill。
skip
定义要跳过的 ES 功能以减少包大小。例如,你的 .swcrc 可以是:
.swcrc
{
"env": {
"skip": ["core-js/modules/foo"]
}
}coreJs
string,默认为undefined。coreJs指定要使用的core-js版本,可以是 swc 支持的任何 core-js 版本。例如,"3.22"。
该选项在与 mode: "usage" 或 mode: "entry" 一起使用时生效。建议指定次要版本(例如 "3.22"),否则 "3" 将被解释为 "3.0",这可能不包括最新功能的 polyfill。
其他选项
debug: (boolean) 默认为false。dynamicImport: (boolean) 默认为false。loose: (boolean) 默认为false。为任何允许的插件启用 松散转换 (opens in a new tab)。include: (string[]) 可以是core-js模块(es.math.sign)或 SWC 传递(transform-spread)。exclude: (string[]) 可以是core-js模块(es.math.sign)或 SWC 传递(transform-spread)。shippedProposals: (boolean) 默认为false。forceAllTransforms: (boolean) 默认为false。启用所有可能的转换。