import/no-commonjs 制限
何を行うか
CommonJS の require 呼び出しの使用を禁止します。また、module.exports および exports.* も禁止します。
なぜこれは良くないのか?
ESM モジュールまたは TypeScript では、CommonJS の構文ではなく import および export 構文を使用します。 このルールは、コードベース全体での保守性と一貫性を向上させるために、より現代的なモジュールシステムの使用を強制します。
例
このルールに違反する 誤った 例:
js
var mod = require("fs");
var exports = (module.exports = {});
exports.sayHello = function () {
return "Hello";
};
module.exports = "Hola";このルールに準拠する 正しい 例:
js
var a = b && require("c");
if (typeof window !== "undefined") {
require("somelib");
}
var fs = null;
try {
fs = require("fs");
} catch (error) {}設定
このルールは、以下のプロパティを持つ設定オブジェクトを受け入れます。
allowConditionalRequire
type: boolean
default: true
true に設定された場合、条件付きの require() 呼び出し(たとえば if 文や try-catch ブロック内)を許可します。 これは、ESM のインポートがサポートされていない場所で、条件付きに CommonJS による読み込みが必要な場合に便利です。
allowPrimitiveModules
type: boolean
default: false
allowPrimitiveModules オプションを true に設定した場合、以下は有効になります:
js
module.exports = "foo";
module.exports = function rule(context) {
return {
/* ... */
};
};しかし、以下は依然として報告されます:
js
module.exports = { x: "y" };
exports.z = function bark() {
/* ... */
};allowRequire
type: boolean
default: false
true に設定された場合、require 呼び出しは有効になります:
js
var mod = require("./mod");ただし、module.exports は通常通り報告されます。
使用方法
このルールを設定ファイルまたは CLI を使って 有効化 するには、次のようにします:
json
{
"plugins": ["import"],
"rules": {
"import/no-commonjs": "error"
}
}bash
oxlint --deny import/no-commonjs --import-plugin