186 lines
3.2 KiB
Plaintext
186 lines
3.2 KiB
Plaintext
# 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 };
|
||
```
|