mirror of
https://git.proxmox.com/git/pve-eslint
synced 2025-10-10 07:49:14 +00:00

includes a (minimal) working wrapper Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
162 lines
4.8 KiB
Markdown
162 lines
4.8 KiB
Markdown
# enforce a maximum line length (max-len)
|
|
|
|
Very long lines of code in any language can be difficult to read. In order to aid in readability and maintainability many coders have developed a convention to limit lines of code to X number of characters (traditionally 80 characters).
|
|
|
|
```js
|
|
var foo = { "bar": "This is a bar.", "baz": { "qux": "This is a qux" }, "difficult": "to read" }; // very long
|
|
```
|
|
|
|
## Rule Details
|
|
|
|
This rule enforces a maximum line length to increase code readability and maintainability. The length of a line is defined as the number of Unicode characters in the line.
|
|
|
|
## Options
|
|
|
|
This rule has a number or object option:
|
|
|
|
* `"code"` (default `80`) enforces a maximum line length
|
|
* `"tabWidth"` (default `4`) specifies the character width for tab characters
|
|
* `"comments"` enforces a maximum line length for comments; defaults to value of `code`
|
|
* `"ignorePattern"` ignores lines matching a regular expression; can only match a single line and need to be double escaped when written in YAML or JSON
|
|
* `"ignoreComments": true` ignores all trailing comments and comments on their own line
|
|
* `"ignoreTrailingComments": true` ignores only trailing comments
|
|
* `"ignoreUrls": true` ignores lines that contain a URL
|
|
* `"ignoreStrings": true` ignores lines that contain a double-quoted or single-quoted string
|
|
* `"ignoreTemplateLiterals": true` ignores lines that contain a template literal
|
|
* `"ignoreRegExpLiterals": true` ignores lines that contain a RegExp literal
|
|
|
|
### code
|
|
|
|
Examples of **incorrect** code for this rule with the default `{ "code": 80 }` option:
|
|
|
|
```js
|
|
/*eslint max-len: ["error", { "code": 80 }]*/
|
|
|
|
var foo = { "bar": "This is a bar.", "baz": { "qux": "This is a qux" }, "difficult": "to read" };
|
|
```
|
|
|
|
Examples of **correct** code for this rule with the default `{ "code": 80 }` option:
|
|
|
|
```js
|
|
/*eslint max-len: ["error", { "code": 80 }]*/
|
|
|
|
var foo = {
|
|
"bar": "This is a bar.",
|
|
"baz": { "qux": "This is a qux" },
|
|
"easier": "to read"
|
|
};
|
|
```
|
|
|
|
### tabWidth
|
|
|
|
Examples of **incorrect** code for this rule with the default `{ "tabWidth": 4 }` option:
|
|
|
|
```js
|
|
/*eslint max-len: ["error", { "code": 80, "tabWidth": 4 }]*/
|
|
|
|
\t \t var foo = { "bar": "This is a bar.", "baz": { "qux": "This is a qux" } };
|
|
```
|
|
|
|
Examples of **correct** code for this rule with the default `{ "tabWidth": 4 }` option:
|
|
|
|
```js
|
|
/*eslint max-len: ["error", { "code": 80, "tabWidth": 4 }]*/
|
|
|
|
\t \t var foo = {
|
|
\t \t \t \t "bar": "This is a bar.",
|
|
\t \t \t \t "baz": { "qux": "This is a qux" }
|
|
\t \t };
|
|
```
|
|
|
|
### comments
|
|
|
|
Examples of **incorrect** code for this rule with the `{ "comments": 65 }` option:
|
|
|
|
```js
|
|
/*eslint max-len: ["error", { "comments": 65 }]*/
|
|
|
|
/**
|
|
* This is a comment that violates the maximum line length we have specified
|
|
**/
|
|
```
|
|
|
|
### ignoreComments
|
|
|
|
Examples of **correct** code for this rule with the `{ "ignoreComments": true }` option:
|
|
|
|
```js
|
|
/*eslint max-len: ["error", { "ignoreComments": true }]*/
|
|
|
|
/**
|
|
* This is a really really really really really really really really really long comment
|
|
**/
|
|
```
|
|
|
|
### ignoreTrailingComments
|
|
|
|
Examples of **correct** code for this rule with the `{ "ignoreTrailingComments": true }` option:
|
|
|
|
```js
|
|
/*eslint max-len: ["error", { "ignoreTrailingComments": true }]*/
|
|
|
|
var foo = 'bar'; // This is a really really really really really really really long comment
|
|
```
|
|
|
|
### ignoreUrls
|
|
|
|
Examples of **correct** code for this rule with the `{ "ignoreUrls": true }` option:
|
|
|
|
```js
|
|
/*eslint max-len: ["error", { "ignoreUrls": true }]*/
|
|
|
|
var url = 'https://www.example.com/really/really/really/really/really/really/really/long';
|
|
```
|
|
|
|
### ignoreStrings
|
|
|
|
Examples of **correct** code for this rule with the `{ "ignoreStrings": true }` option:
|
|
|
|
```js
|
|
/*eslint max-len: ["error", { "ignoreStrings": true }]*/
|
|
|
|
var longString = 'this is a really really really really really long string!';
|
|
```
|
|
|
|
### ignoreTemplateLiterals
|
|
|
|
Examples of **correct** code for this rule with the `{ "ignoreTemplateLiterals": true }` option:
|
|
|
|
```js
|
|
/*eslint max-len: ["error", { "ignoreTemplateLiterals": true }]*/
|
|
|
|
var longTemplateLiteral = `this is a really really really really really long template literal!`;
|
|
```
|
|
|
|
### ignoreRegExpLiterals
|
|
|
|
Examples of **correct** code for this rule with the `{ "ignoreRegExpLiterals": true }` option:
|
|
|
|
```js
|
|
/*eslint max-len: ["error", { "ignoreRegExpLiterals": true }]*/
|
|
|
|
var longRegExpLiteral = /this is a really really really really really long regular expression!/;
|
|
```
|
|
|
|
### ignorePattern
|
|
|
|
Examples of **correct** code for this rule with the `ignorePattern` option:
|
|
|
|
```js
|
|
/*eslint max-len: ["error", { "ignorePattern": "^\\s*var\\s.+=\\s*require\\s*\\(" }]*/
|
|
|
|
var dep = require('really/really/really/really/really/really/really/really/long/module');
|
|
```
|
|
|
|
## Related Rules
|
|
|
|
* [complexity](complexity.md)
|
|
* [max-depth](max-depth.md)
|
|
* [max-nested-callbacks](max-nested-callbacks.md)
|
|
* [max-params](max-params.md)
|
|
* [max-statements](max-statements.md)
|