186 lines
3.2 KiB
Markdown
186 lines
3.2 KiB
Markdown
|
# import/prefer-default-export
|
|||
|
|
|||
|
<!-- end auto-generated rule header -->
|
|||
|
|
|||
|
In exporting files, this rule checks if there is default export or not.
|
|||
|
|
|||
|
## Rule Details
|
|||
|
|
|||
|
### rule schema
|
|||
|
|
|||
|
```javascript
|
|||
|
"import/prefer-default-export": [
|
|||
|
( "off" | "warn" | "error" ),
|
|||
|
{ "target": "single" | "any" } // default is "single"
|
|||
|
]
|
|||
|
```
|
|||
|
|
|||
|
### Config Options
|
|||
|
|
|||
|
There are two options available: `single` and `any`. By default, if you do not specify the option, rule will assume it is `single`.
|
|||
|
|
|||
|
#### single
|
|||
|
|
|||
|
**Definition**: When there is only a single export from a module, prefer using default export over named export.
|
|||
|
|
|||
|
How to setup config file for this rule:
|
|||
|
|
|||
|
```javascript
|
|||
|
// you can manually specify it
|
|||
|
"rules": {
|
|||
|
"import/prefer-default-export": [
|
|||
|
( "off" | "warn" | "error" ),
|
|||
|
{ "target": "single" }
|
|||
|
]
|
|||
|
}
|
|||
|
|
|||
|
// config setup below will also work
|
|||
|
"rules": {
|
|||
|
"import/prefer-default-export": "off" | "warn" | "error"
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
The following patterns are considered warnings:
|
|||
|
|
|||
|
```javascript
|
|||
|
// bad.js
|
|||
|
|
|||
|
// There is only a single module export and it's a named export.
|
|||
|
export const foo = 'foo';
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
The following patterns are not warnings:
|
|||
|
|
|||
|
```javascript
|
|||
|
// good1.js
|
|||
|
|
|||
|
// There is a default export.
|
|||
|
export const foo = 'foo';
|
|||
|
const bar = 'bar';
|
|||
|
export default bar;
|
|||
|
```
|
|||
|
|
|||
|
```javascript
|
|||
|
// good2.js
|
|||
|
|
|||
|
// There is more than one named export in the module.
|
|||
|
export const foo = 'foo';
|
|||
|
export const bar = 'bar';
|
|||
|
```
|
|||
|
|
|||
|
```javascript
|
|||
|
// good3.js
|
|||
|
|
|||
|
// There is more than one named export in the module
|
|||
|
const foo = 'foo';
|
|||
|
const bar = 'bar';
|
|||
|
export { foo, bar }
|
|||
|
```
|
|||
|
|
|||
|
```javascript
|
|||
|
// good4.js
|
|||
|
|
|||
|
// There is a default export.
|
|||
|
const foo = 'foo';
|
|||
|
export { foo as default }
|
|||
|
```
|
|||
|
|
|||
|
```javascript
|
|||
|
// export-star.js
|
|||
|
|
|||
|
// Any batch export will disable this rule. The remote module is not inspected.
|
|||
|
export * from './other-module'
|
|||
|
```
|
|||
|
|
|||
|
#### any
|
|||
|
|
|||
|
**Definition**: any exporting file must contain a default export.
|
|||
|
|
|||
|
How to setup config file for this rule:
|
|||
|
|
|||
|
```javascript
|
|||
|
// you have to manually specify it
|
|||
|
"rules": {
|
|||
|
"import/prefer-default-export": [
|
|||
|
( "off" | "warn" | "error" ),
|
|||
|
{ "target": "any" }
|
|||
|
]
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
The following patterns are *not* considered warnings:
|
|||
|
|
|||
|
```javascript
|
|||
|
// good1.js
|
|||
|
|
|||
|
//has default export
|
|||
|
export default function bar() {};
|
|||
|
```
|
|||
|
|
|||
|
```javascript
|
|||
|
// good2.js
|
|||
|
|
|||
|
// has default export
|
|||
|
let foo;
|
|||
|
export { foo as default }
|
|||
|
```
|
|||
|
|
|||
|
```javascript
|
|||
|
// good3.js
|
|||
|
|
|||
|
//contains multiple exports AND default export
|
|||
|
export const a = 5;
|
|||
|
export function bar(){};
|
|||
|
let foo;
|
|||
|
export { foo as default }
|
|||
|
```
|
|||
|
|
|||
|
```javascript
|
|||
|
// good4.js
|
|||
|
|
|||
|
// does not contain any exports => file is not checked by the rule
|
|||
|
import * as foo from './foo';
|
|||
|
```
|
|||
|
|
|||
|
```javascript
|
|||
|
// export-star.js
|
|||
|
|
|||
|
// Any batch export will disable this rule. The remote module is not inspected.
|
|||
|
export * from './other-module'
|
|||
|
```
|
|||
|
|
|||
|
The following patterns are considered warnings:
|
|||
|
|
|||
|
```javascript
|
|||
|
// bad1.js
|
|||
|
|
|||
|
//has 2 named exports, but no default export
|
|||
|
export const foo = 'foo';
|
|||
|
export const bar = 'bar';
|
|||
|
```
|
|||
|
|
|||
|
```javascript
|
|||
|
// bad2.js
|
|||
|
|
|||
|
// does not have default export
|
|||
|
let foo, bar;
|
|||
|
export { foo, bar }
|
|||
|
```
|
|||
|
|
|||
|
```javascript
|
|||
|
// bad3.js
|
|||
|
|
|||
|
// does not have default export
|
|||
|
export { a, b } from "foo.js"
|
|||
|
```
|
|||
|
|
|||
|
```javascript
|
|||
|
// bad4.js
|
|||
|
|
|||
|
// does not have default export
|
|||
|
let item;
|
|||
|
export const foo = item;
|
|||
|
export { item };
|
|||
|
```
|