跳至內容
文件
設定
模組

模組

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 結尾的任何路徑。