node/file-extension-in-import
May 3, 2019 · View on GitHub
enforce the style of file extensions in
importdeclarations
- ✒️ The
--fixoption on the command line can automatically fix some of the problems reported by this rule.
We can omit file extensions in import/export declarations.
import foo from "./path/to/a/file" // maybe it's resolved to 'file.js' or 'file.json'
export * from "./path/to/a/file"
However, --experimental-modules has declared to drop the file extension omition.
Also, we can import a variety kind of files with bundlers such as Webpack. In the situation, probably explicit file extensions help us to understand code.
📖 Rule Details
This rule enforces the style of file extensions in import/export declarations.
Options
This rule has a string option and an object option.
{
"node/file-extension-in-import": [
"error",
"always" or "never",
{
"tryExtensions": [".js", ".json", ".node"],
".xxx": "always" or "never",
}
]
}
"always"(default) requires file extensions inimport/exportdeclarations."never"disallows file extensions inimport/exportdeclarations.tryExtensionsis the file extensions to resolve import paths. Default is[".js", ".json", ".node"]..xxxis the overriding setting for specific file extensions. You can use arbitrary property names which start with..
always
Examples of :-1: incorrect code for the "always" option:
/*eslint node/file-extension-in-import: ["error", "always"]*/
import foo from "./path/to/a/file"
Examples of :+1: correct code for the "always" option:
/*eslint node/file-extension-in-import: ["error", "always"]*/
import eslint from "eslint"
import foo from "./path/to/a/file.js"
never
Examples of :-1: incorrect code for the "never" option:
/*eslint node/file-extension-in-import: ["error", "never"]*/
import foo from "./path/to/a/file.js"
Examples of :+1: correct code for the "never" option:
/*eslint node/file-extension-in-import: ["error", "never"]*/
import eslint from "eslint"
import foo from "./path/to/a/file"
.xxx
Examples of :+1: correct code for the ["always", { ".js": "never" }] option:
/*eslint node/file-extension-in-import: ["error", "always", { ".js": "never" }]*/
import eslint from "eslint"
import script from "./script"
import styles from "./styles.css"
import logo from "./logo.png"
Shared Settings
The following options can be set by shared settings. Several rules have the same option, but we can set this option at once.
tryExtensions
// .eslintrc.js
module.exports = {
"settings": {
"node": {
"tryExtensions": [".js", ".json", ".node"]
}
},
"rules": {
"node/file-extension-in-import": "error"
}
}