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
기본값: true
true로 설정되면 조건부 require() 호출(예: if 문 내부 또는 try-catch 블록 내부)을 허용합니다.
이는 ESM import가 지원되지 않을 경우 조건부로 CommonJS requires를 로드해야 하는 경우에 유용합니다.
allowPrimitiveModules
type: boolean
기본값: 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
기본값: 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