Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
New: prefer-global/* rules
  • Loading branch information
mysticatea committed Jul 16, 2018
1 parent 217411d commit 3d79333
Show file tree
Hide file tree
Showing 19 changed files with 821 additions and 0 deletions.
11 changes: 11 additions & 0 deletions .eslintrc.js
Expand Up @@ -31,5 +31,16 @@ module.exports = {
],
},
},
{
files: ["**/rules/prefer-global/*.js"],
rules: {
"@mysticatea/eslint-plugin/require-meta-docs-url": [
"error",
{
pattern: `https://github.com/mysticatea/eslint-plugin-node/blob/v${version}/docs/rules/prefer-global/{{name}}.md`,
},
],
},
},
],
}
5 changes: 5 additions & 0 deletions README.md
Expand Up @@ -76,6 +76,11 @@ $ npm install --save-dev eslint eslint-plugin-node
| Rule ID | Description | |
|:--------|:------------|:--:|
| [node/exports-style](./docs/rules/exports-style.md) | enforce either `module.exports` or `exports` | |
| [node/prefer-global/buffer](./docs/rules/prefer-global/buffer.md) | enforce either `Buffer` or `require("buffer").Buffer` | |
| [node/prefer-global/console](./docs/rules/prefer-global/console.md) | enforce either `console` or `require("console")` | |
| [node/prefer-global/process](./docs/rules/prefer-global/process.md) | enforce either `process` or `require("process")` | |
| [node/prefer-global/url-search-params](./docs/rules/prefer-global/url-search-params.md) | enforce either `URLSearchParams` or `require("url").URLSearchParams` | |
| [node/prefer-global/url](./docs/rules/prefer-global/url.md) | enforce either `URL` or `require("url").URL` | |

<!--RULES_TABLE_END-->

Expand Down
64 changes: 64 additions & 0 deletions docs/rules/prefer-global/buffer.md
@@ -0,0 +1,64 @@
# enforce either `Buffer` or `require("buffer").Buffer` (prefer-global/buffer)

The `Buffer` class of `buffer` module is defined as a global variable.

```js
console.log(Buffer === require("buffer").Buffer) //→ true
```

It will be readable if we use either `Buffer` consistently.

## Rule Details

This rule enforces which `Buffer` we should use.

### Options

This rule has a string option.

```json
{
"node/prefer-global/buffer": ["error", "always" | "never"]
}
```

- `"always"` (default) ... enforces to use the global variable `Buffer` rather than `require("buffer").Buffer`.
- `"never"` ... enforces to use `require("buffer").Buffer` rather than the global variable `Buffer`.

#### always

Examples of :-1: **incorrect** code for this rule:

```js
/*eslint node/prefer-global/buffer: [error]*/

const { Buffer } = require("buffer")
const b = Buffer.alloc(16)
```

Examples of :+1: **correct** code for this rule:

```js
/*eslint node/prefer-global/buffer: [error]*/

const b = Buffer.alloc(16)
```

#### never

Examples of :-1: **incorrect** code for the `"never"` option:

```js
/*eslint node/prefer-global/buffer: [error, never]*/

const b = Buffer.alloc(16)
```

Examples of :+1: **correct** code for the `"never"` option:

```js
/*eslint node/prefer-global/buffer: [error, never]*/

const { Buffer } = require("buffer")
const b = Buffer.alloc(16)
```
64 changes: 64 additions & 0 deletions docs/rules/prefer-global/console.md
@@ -0,0 +1,64 @@
# enforce either `console` or `require("console")` (prefer-global/console)

The `console` module is defined as a global variable.

```js
console.log(console === require("console")) //→ true
```

It will be readable if we use either `console` consistently.

## Rule Details

This rule enforces which `console` we should use.

### Options

This rule has a string option.

```json
{
"node/prefer-global/console": ["error", "always" | "never"]
}
```

- `"always"` (default) ... enforces to use the global variable `console` rather than `require("console")`.
- `"never"` ... enforces to use `require("console")` rather than the global variable `console`.

#### always

Examples of :-1: **incorrect** code for this rule:

```js
/*eslint node/prefer-global/console: [error]*/

const console = require("console")
console.log("hello")
```

Examples of :+1: **correct** code for this rule:

```js
/*eslint node/prefer-global/console: [error]*/

console.log("hello")
```

#### never

Examples of :-1: **incorrect** code for the `"never"` option:

```js
/*eslint node/prefer-global/console: [error, never]*/

console.log("hello")
```

Examples of :+1: **correct** code for the `"never"` option:

```js
/*eslint node/prefer-global/console: [error, never]*/

const console = require("console")
console.log("hello")
```
64 changes: 64 additions & 0 deletions docs/rules/prefer-global/process.md
@@ -0,0 +1,64 @@
# enforce either `process` or `require("process")` (prefer-global/process)

The `process` module is defined as a global variable.

```js
process.log(process === require("process")) //→ true
```

It will be readable if we use either `process` consistently.

## Rule Details

This rule enforces which `process` we should use.

### Options

This rule has a string option.

```json
{
"node/prefer-global/process": ["error", "always" | "never"]
}
```

- `"always"` (default) ... enforces to use the global variable `process` rather than `require("process")`.
- `"never"` ... enforces to use `require("process")` rather than the global variable `process`.

#### always

Examples of :-1: **incorrect** code for this rule:

```js
/*eslint node/prefer-global/process: [error]*/

const process = require("process")
process.exit(0)
```

Examples of :+1: **correct** code for this rule:

```js
/*eslint node/prefer-global/process: [error]*/

process.exit(0)
```

#### never

Examples of :-1: **incorrect** code for the `"never"` option:

```js
/*eslint node/prefer-global/process: [error, never]*/

process.exit(0)
```

Examples of :+1: **correct** code for the `"never"` option:

```js
/*eslint node/prefer-global/process: [error, never]*/

const process = require("process")
process.exit(0)
```
64 changes: 64 additions & 0 deletions docs/rules/prefer-global/url-search-params.md
@@ -0,0 +1,64 @@
# enforce either `URLSearchParams` or `require("url").URLSearchParams` (prefer-global/url)

The `URLSearchParams` class of `url` module is defined as a global variable.

```js
console.log(URLSearchParams === require("url").URLSearchParams) //→ true
```

It will be readable if we use either `URLSearchParams` consistently.

## Rule Details

This rule enforces which `URLSearchParams` we should use.

### Options

This rule has a string option.

```json
{
"node/prefer-global/url": ["error", "always" | "never"]
}
```

- `"always"` (default) ... enforces to use the global variable `URLSearchParams` rather than `require("url").URLSearchParams`.
- `"never"` ... enforces to use `require("url").URLSearchParams` rather than the global variable `URLSearchParams`.

#### always

Examples of :-1: **incorrect** code for this rule:

```js
/*eslint node/prefer-global/url: [error]*/

const { URLSearchParams } = require("url")
const u = new URLSearchParams(s)
```

Examples of :+1: **correct** code for this rule:

```js
/*eslint node/prefer-global/url: [error]*/

const u = new URLSearchParams(s)
```

#### never

Examples of :-1: **incorrect** code for the `"never"` option:

```js
/*eslint node/prefer-global/url: [error, never]*/

const u = new URLSearchParams(s)
```

Examples of :+1: **correct** code for the `"never"` option:

```js
/*eslint node/prefer-global/url: [error, never]*/

const { URLSearchParams } = require("url")
const u = new URLSearchParams(s)
```
64 changes: 64 additions & 0 deletions docs/rules/prefer-global/url.md
@@ -0,0 +1,64 @@
# enforce either `URL` or `require("url").URL` (prefer-global/url)

The `URL` class of `url` module is defined as a global variable.

```js
console.log(URL === require("url").URL) //→ true
```

It will be readable if we use either `URL` consistently.

## Rule Details

This rule enforces which `URL` we should use.

### Options

This rule has a string option.

```json
{
"node/prefer-global/url": ["error", "always" | "never"]
}
```

- `"always"` (default) ... enforces to use the global variable `URL` rather than `require("url").URL`.
- `"never"` ... enforces to use `require("url").URL` rather than the global variable `URL`.

#### always

Examples of :-1: **incorrect** code for this rule:

```js
/*eslint node/prefer-global/url: [error]*/

const { URL } = require("url")
const u = new URL(s)
```

Examples of :+1: **correct** code for this rule:

```js
/*eslint node/prefer-global/url: [error]*/

const u = new URL(s)
```

#### never

Examples of :-1: **incorrect** code for the `"never"` option:

```js
/*eslint node/prefer-global/url: [error, never]*/

const u = new URL(s)
```

Examples of :+1: **correct** code for the `"never"` option:

```js
/*eslint node/prefer-global/url: [error, never]*/

const { URL } = require("url")
const u = new URL(s)
```
5 changes: 5 additions & 0 deletions lib/index.js
Expand Up @@ -18,6 +18,11 @@ module.exports = {
"no-unsupported-features/es-builtins": require("./rules/no-unsupported-features/es-builtins"),
"no-unsupported-features/es-syntax": require("./rules/no-unsupported-features/es-syntax"),
"no-unsupported-features/node-builtins": require("./rules/no-unsupported-features/node-builtins"),
"prefer-global/buffer": require("./rules/prefer-global/buffer"),
"prefer-global/console": require("./rules/prefer-global/console"),
"prefer-global/process": require("./rules/prefer-global/process"),
"prefer-global/url-search-params": require("./rules/prefer-global/url-search-params"),
"prefer-global/url": require("./rules/prefer-global/url"),
"process-exit-as-throw": require("./rules/process-exit-as-throw"),
shebang: require("./rules/shebang"),

Expand Down

0 comments on commit 3d79333

Please sign in to comment.