跳至内容
文档
配置
模块

模块

SWC 可以使用 ES 模块将您的代码转换为 CommonJS 或 UMD/AMD。默认情况下,模块语句将保持不变。

CommonJS

要发出 CommonJS 模块,请更改 type.swcrc

.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

.swcrc
{
  "module": {
    "type": "es6",
 
    // These are defaults.
    "strict": false,
    "strictMode": true,
    "lazy": false,
    "noInterop": false
  }
}

AMD

要发出 AMD 模块,请更改 type.swcrc

.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

.swcrc
{
  "module": {
    "type": "umd",
    "globals": {},
 
    // These are defaults.
    "strict": false,
    "strictMode": true,
    "lazy": false,
    "noInterop": false
  }
}

共享选项

这些选项由 commonjs / es6 / umd / amd.swcrc 中共享

.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)
  • node
  • none

如果 noInterop 为 true,则默认为 none,否则为 swc

resolveFully

当设置为 true 时,将完全解析模块 import 文件路径,包括以 index.js 结尾的路径。