import/no-unassigned-import 疑わしい
何をするか
このルールは、モジュールがインポートされたが割り当てられていない場合に報告することで、副作用を持つモジュールを削除することを目指しています。
なぜ問題なのか
CommonJS の require と ES モジュールの import 構文の両方において、モジュールをインポートしてもその結果を使用しないことが可能です。これは明示的にモジュールを変数に代入しないことで実現できます。このような操作は以下のいずれかを意味します:
- モジュールがインポートされているが実際に使用されていない
- モジュールに副作用がある。副作用があると、モジュールが実際に使用されているのか、削除可能かどうか判断しにくくなります。また、アプリケーションの一部をテストやモックしにくくなる可能性もあります。
例
このルールに対する誤ったコードの例:
js
import "should";
require("should");このルールに対する正しいコードの例:
js
import _ from "foo";
import _, { foo } from "foo";
import _, { foo as bar } from "foo";
const _ = require("foo");
const { foo } = require("foo");
const { foo: bar } = require("foo");
bar(require("foo"));設定
このルールは、次のプロパティを持つ設定オブジェクトを受け入れます。
allow
type: string[]
default: []
特定のモジュールに対して未割り当てのインポートを許可するグロブパターンのリストです。たとえば: { "allow": ["**/*.css"] } とすると、.css で終わる任意のモジュールに対して未割り当てのインポートを許可します。
使用方法
設定ファイルまたは CLI でこのルールを有効化するには、次のようにします:
json
{
"plugins": ["import"],
"rules": {
"import/no-unassigned-import": "error"
}
}bash
oxlint --deny import/no-unassigned-import --import-plugin