ts/no-require-imports
Disallow require() in TypeScript files. Prefer ESM import syntax.
- Category: Plugin (built-in)
- Default: off
Config (both forms accepted):
ts
pluginRules: { 'no-require-imports': 'error' }
// or
pluginRules: { 'ts/no-require-imports': 'error' }Examples (violations):
ts
// a.ts
const fs = require('node:fs')ts
// a.ts
import fs = require('fs')Non-violations:
ts
// dynamic import
const mod = await import('node:fs')Rationale: TypeScript projects commonly target ESM. Mixing require() with ESM import/export leads to interop edge cases and bundler inconsistencies.
Best practices
- Use
import fs from 'fs'orimport * as fs from 'fs'depending on module type - Enable this rule at
errorfor ESM-only codebases - If migrating legacy CJS, selectively disable the rule per-file during transition