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.
This rule enforces the style of file extensions in import/export declarations.
This rule has a string option and an object option.
{
"node-roikoren/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..
Examples of 👎 incorrect code for the "always" option:
/*eslint node-roikoren/file-extension-in-import: ["error", "always"]*/
import foo from "./path/to/a/file"Examples of 👍 correct code for the "always" option:
/*eslint node-roikoren/file-extension-in-import: ["error", "always"]*/
import eslint from "eslint"
import foo from "./path/to/a/file.js"Examples of 👎 incorrect code for the "never" option:
/*eslint node-roikoren/file-extension-in-import: ["error", "never"]*/
import foo from "./path/to/a/file.js"Examples of 👍 correct code for the "never" option:
/*eslint node-roikoren/file-extension-in-import: ["error", "never"]*/
import eslint from "eslint"
import foo from "./path/to/a/file"Examples of 👍 correct code for the ["always", { ".js": "never" }] option:
/*eslint node-roikoren/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"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-roikoren/file-extension-in-import": "error"
}
}