no-require-imports
require()
の呼び出しを許可しません。
require()
よりも新しい ES6 スタイルのインポートを推奨します。
.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/no-require-imports": "error"
}
};
プレイグラウンドでこのルールを試す ↗
例
- ❌ 間違い
- ✅ 正解
const lib1 = require('lib1');
const { lib2 } = require('lib2');
import lib3 = require('lib3');
プレイグラウンドで開くimport * as lib1 from 'lib1';
import { lib2 } from 'lib2';
import * as lib3 from 'lib3';
プレイグラウンドで開くオプション
このルールは次のオプションを受け入れます
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 モジュールをサポートしていない場合は、JSON のインポートを許可したり、`import` 文が機能しないその他のケースに使用したりすることもできます。
{allow: ['/package\\.json$']}
を使用する場合
- ❌ 間違い
- ✅ 正解
console.log(require('../data.json').version);
プレイグラウンドで開くconsole.log(require('../package.json').version);
プレイグラウンドで開く使用しない場合
プロジェクトで古い CommonJS の `require` を頻繁に使用する場合、このルールは適用されない可能性があります。プロジェクトの一部のみで `require` を使用している場合は、このルールを完全に無効にする代わりに、ESLint の無効化コメントを特定の状況で使用することを検討してください。