Skip to content
Permalink
9bfb9ba527
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
118 lines (91 sloc) 2.36 KB
# import/group-exports
<!-- end auto-generated rule header -->
Reports when named exports are not grouped together in a single `export` declaration or when multiple assignments to CommonJS `module.exports` or `exports` object are present in a single file.
**Rationale:** An `export` declaration or `module.exports` assignment can appear anywhere in the code. By requiring a single export declaration all your exports will remain at one place, making it easier to see what exports a module provides.
## Rule Details
This rule warns whenever a single file contains multiple named export declarations or multiple assignments to `module.exports` (or `exports`).
### Valid
```js
// A single named export declaration -> ok
export const valid = true
```
```js
const first = true
const second = true
// A single named export declaration -> ok
export {
first,
second,
}
```
```js
// Aggregating exports -> ok
export { default as module1 } from 'module-1'
export { default as module2 } from 'module-2'
```
```js
// A single exports assignment -> ok
module.exports = {
first: true,
second: true
}
```
```js
const first = true
const second = true
// A single exports assignment -> ok
module.exports = {
first,
second,
}
```
```js
function test() {}
test.property = true
test.another = true
// A single exports assignment -> ok
module.exports = test
```
```ts
const first = true;
type firstType = boolean
// A single named export declaration (type exports handled separately) -> ok
export {first}
export type {firstType}
```
### Invalid
```js
// Multiple named export statements -> not ok!
export const first = true
export const second = true
```
```js
// Aggregating exports from the same module -> not ok!
export { module1 } from 'module-1'
export { module2 } from 'module-1'
```
```js
// Multiple exports assignments -> not ok!
exports.first = true
exports.second = true
```
```js
// Multiple exports assignments -> not ok!
module.exports = {}
module.exports.first = true
```
```js
// Multiple exports assignments -> not ok!
module.exports = () => {}
module.exports.first = true
module.exports.second = true
```
```ts
type firstType = boolean
type secondType = any
// Multiple named type export statements -> not ok!
export type {firstType}
export type {secondType}
```
## When Not To Use It
If you do not mind having your exports spread across the file, you can safely turn this rule off.