模块
SWC 可以使用 ES 模块将您的代码转换为 CommonJS 或 UMD/AMD。默认情况下,模块语句将保持不变。
CommonJS
要发出 CommonJS 模块,请更改 type 在 .swcrc
{
"$schema": "http://json.schemastore.org/swcrc",
"module": {
"type": "commonjs",
// These are defaults.
"strict": false,
"strictMode": true,
"lazy": false,
"noInterop": false
}
}ES6
要发出 ES6 模块,请更改 type 在 .swcrc
{
"module": {
"type": "es6",
// These are defaults.
"strict": false,
"strictMode": true,
"lazy": false,
"noInterop": false
}
}AMD
要发出 AMD 模块,请更改 type 在 .swcrc
{
"module": {
"type": "amd",
// Optional. If specified, swc emits named AMD module.
"moduleId": "foo",
// These are defaults.
"strict": false,
"strictMode": true,
"lazy": false,
"noInterop": false
}
}UMD
要发出 UMD 模块,请更改 type 在 .swcrc
{
"module": {
"type": "umd",
"globals": {},
// These are defaults.
"strict": false,
"strictMode": true,
"lazy": false,
"noInterop": false
}
}共享选项
这些选项由 commonjs / es6 / umd / amd 在 .swcrc 中共享
{
"module": {
// You can specify "commonjs", "es6", "amd", "umd"
"type": "commonjs",
"strict": false,
"strictMode": true,
"lazy": false,
"noInterop": false,
"ignoreDynamic": false
}
}strict
默认为 false。默认情况下,在使用 SWC 的导出时,会导出一个不可枚举的 __esModule 属性。在某些情况下,此属性用于确定导入是默认导出还是包含默认导出。
要防止导出 __esModule 属性,可以将 strict 选项设置为 true。
strictMode
默认为 true。如果为 true,swc 会发出 'use strict' 指令。
lazy
默认为 false。此选项将 Babel 编译的 import 语句更改为在首次使用其导入绑定时延迟评估。这可以提高模块的初始加载时间,因为提前评估依赖项有时完全没有必要。当实现库模块时尤其如此。
lazy 的值有几种可能的效果
false- 不会延迟初始化任何导入的模块。true- 不要延迟初始化本地./foo导入,但延迟初始化foo依赖项。本地路径更有可能存在循环依赖,如果延迟加载,可能会中断,因此默认情况下它们不会延迟加载,而独立模块之间的依赖项很少是循环的。Array<string>- 延迟初始化所有源代码与给定字符串之一匹配的导入。
导入永远无法延迟的两种情况是
import "foo";副作用导入自动是非延迟的,因为它们的存在意味着没有绑定来稍后启动初始化。export from "foo"重新导出所有名称需要提前执行,否则无法知道需要导出哪些名称。
noInterop
默认为 false。默认情况下,在使用 swc 的导出时,会导出一个不可枚举的 __esModule 属性。然后使用此属性来确定导入是默认导出还是包含默认导出。
在不需要自动解包默认值的情况下,可以将 noInterop 选项设置为 true 以避免使用 interopRequireDefault 帮助程序(如上所示的内联形式)。
ignoreDynamic
如果设置为 true,动态导入将被保留。
importInterop
可能的值
swc(别名:babel)nodenone
如果 noInterop 为 true,则默认为 none,否则为 swc。
resolveFully
当设置为 true 时,将完全解析模块 import 文件路径,包括以 index.js 结尾的路径。