eslint-plugin-import-extensions
TypeScript doesn't transform extensions and doesn't enforce file extensions.
This is a simple eslint plugin that ensures that relative imports and exports have extensions as desired (e.g. .js
, .ts
, .cjs
, etc.). It also ensures that index files are explicitly imported.
This is a fork of eslint-plugin-require-extensions.
Credit for the original implementation goes to johnrees. ❤️
Install
npm install --save-dev eslint-plugin-require-extensions
Edit .eslintrc
{
"extends": ["plugin:import-extensions/recommended"],
"plugins": ["import-extensions"]
}
Rules Configuration
The default expectedExtensions
option is ['js']
, but you may override it and extensions will be used in priority order (most important first).
{
"rules": {
"import-extensions/require-extensions": ["error", { "expectedExtensions": ["ts"] }],
"import-extensions/require-index": ["error", { "expectedExtensions": ["ts"] }]
}
}
Code
import Target from './target';
Lint
eslint .
source.js
1:1 error Relative imports and exports must end with .js import-extensions/require-extensions
Fix
eslint --fix .
import Target from './target.js';