no-var-requires
インポート文以外での`require`文を禁止します。
✅
拡張 "plugin:@typescript-eslint/recommended"
を ESLint設定 で有効にすると、このルールが有効になります。
言い換えれば、`var foo = require("foo")`のような形式の使用は禁止されます。代わりにES6スタイルのインポートまたは`import foo = require("foo")`インポートを使用してください。
.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/no-var-requires": "error"
}
};
このルールをPlaygroundでお試しください ↗
例
- ❌ 正しくない
- ✅ 正しい
var foo = require('foo');
const foo = require('foo');
let foo = require('foo');
Playgroundで開くimport foo = require('foo');
require('foo');
import foo from 'foo';
Playgroundで開くオプション
このルールは次のオプションを受け入れます
type Options = [
{
/** Patterns of import paths to allow requiring from. */
allow?: string[];
},
];
const defaultOptions: Options = [{ allow: [] }];
allow
文字列の配列です。これらの文字列は`u`フラグ付きの正規表現にコンパイルされ、インポートされたパスに対してテストするために使用されます。一般的なユースケースは`package.json`のインポートを許可することです。これは`package.json`が一般的にTSルートディレクトリの外部に存在するため、静的にインポートするとルートディレクトリの競合が発生する可能性があるためです、特に`resolveJsonModule`を有効にしている場合。また、環境がJSONモジュールをサポートしていない場合、または`import`文が機能しないその他のケースにも使用できます。
`{allow: ['/package\\.json$']}`の場合
- ❌ 正しくない
- ✅ 正しい
const foo = require('../data.json');
Playgroundで開くconst foo = require('../package.json');
Playgroundで開く使用しない場合
プロジェクトで古いCommonJSの`require`を頻繁に使用している場合、このルールは適用できない可能性があります。プロジェクトの一部のみで`require`を使用している場合は、このルールを完全に無効にする代わりに、ESLintの無効化コメントを特定の状況で使用することを検討してください。