Skip to content
← Back to rules

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

参照