コンテンツにスキップ
ドキュメント
設定
モジュール

モジュール

SWCは、ESモジュールを使用してコードをCommonJSまたはUMD/AMDにトランスパイルできます。デフォルトでは、モジュールステートメントは変更されません。

CommonJS

CommonJSモジュールを出力するには、.swcrctype を変更します。

.swcrc
{
  "$schema": "http://json.schemastore.org/swcrc",
  "module": {
    "type": "commonjs",
 
    // These are defaults.
    "strict": false,
    "strictMode": true,
    "lazy": false,
    "noInterop": false
  }
}

ES6

ES6モジュールを出力するには、.swcrctype を変更します。

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

AMD

AMDモジュールを出力するには、.swcrctype を変更します。

.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モジュールを出力するには、.swcrctype を変更します。

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

共通オプション

これらのオプションは、.swcrc 内の 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> - 指定された文字列のいずれかと一致するソースを使用して、すべてのインポートを遅延初期化します。

インポートが遅延になることができない2つのケースがあります。

  • 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 に設定すると、index.js で終わるパスを含む、モジュールの import ファイルパスを完全に解決します。