Resolution Customization Flags

TL;DR

tsconfig.json にファイル解決のためのオプションが追加された。

tsconfig.json の設定項目を説明したページ。

https://www.typescriptlang.org/ja/tsconfig

allowImportingTsExtensions

.ts.mts 内の相互インポートができるようになる。 --noEmit もしくは --emitDecorationOnly をオンにするとトランスパイル後のJSでインポートが解決できなくなる。これを解消するためのオプションらしい。

resolvePackageJsonExports

node_modules 配下のパッケージを読み取る時に package.jsonexports フィールドを参照する。 --moduleResolutionnode16 / nodenext を指定するとデフォルトtrueになる。

resolvePackageJsonImports

package.jsonimport のマッピングを参照する。

// package.json
"import": {
    "#app": {
        "node": "app-node.js",
        "default": "app.js",
    }
}
import app from "#app";

環境が node なら app-node.js 、条件指定がなければ app.js を参照する。

--moduleResolutionnode16 / nodenext を指定するとデフォルトtrueになる。

allowArbitraryExtensions

React用の拡張のよう。

import styles from "./app.css";
styles.foo;

CSSを変数としてアクセスするため型が必要になる。 app.css.d.ts でなく app.d.css.ts を読み込めるようにオプションが追加された。たぶんバンドラーの出力を考慮したもの。

customConditions

エントリポイント読み込みにカスタム指定を追加できる。

// tsconfig.json(ライブラリ側)
exports: {
    ".": {
        "my-condition": "./foo.mjs",
        "node: "..",
        "import: "..",
        "require": "..",
    }
}
// tsconfit.json(利用側)
compilerOptions: {
    moduleResolution: "bundler",
    customConditions: ["my-condition"]
}

Last updated