モジュール
SWCは、ESモジュールを使用してコードをCommonJSまたはUMD/AMDにトランスパイルできます。デフォルトでは、モジュールステートメントは変更されません。
CommonJS
CommonJSモジュールを出力するには、.swcrc
の type
を変更します。
{
"$schema": "http://json.schemastore.org/swcrc",
"module": {
"type": "commonjs",
// These are defaults.
"strict": false,
"strictMode": true,
"lazy": false,
"noInterop": false
}
}
ES6
ES6モジュールを出力するには、.swcrc
の type
を変更します。
{
"module": {
"type": "es6",
// These are defaults.
"strict": false,
"strictMode": true,
"lazy": false,
"noInterop": false
}
}
AMD
AMDモジュールを出力するには、.swcrc
の type
を変更します。
{
"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モジュールを出力するには、.swcrc
の type
を変更します。
{
"module": {
"type": "umd",
"globals": {},
// These are defaults.
"strict": false,
"strictMode": true,
"lazy": false,
"noInterop": false
}
}
共通オプション
これらのオプションは、.swcrc
内の commonjs
/ es6
/ umd
/ amd
で共通です。
{
"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
ファイルパスを完全に解決します。