UNPKG

eslint-plugin-prefer-let

Version:

Rule to prefer using `let` to bind names to values

97 lines (68 loc) 2.09 kB
# eslint-plugin-prefer-let An eslint plugin to encourage semantic of usage of `let` and `const`. Things being basically equal, code should speak to humans first, and computers second. As such, JavaScript codebases should follow the long-standing conventions set forth by both formal symbolic logic and the practice of functional programming. Usage of the `const` keyword to bind an _intermediate_ value of a computation places emphasis on the compiler and its role in ensuring that a _reference_ never changes. By contrast using `let` in the same situation reads, in plain English, the programmer's intent to declare a name value binding. It is this plugin's opinion that preventing reassignment of `let` bindings is better accomplished as a linting rule. `const` bindings _are_ allowed at the top-level of a module's scope so that it can represent a value that is a true, dependency-free constant such as `π`, `ℯ`, etc... Good: ``` javascript const PI = 3.14; function area(radius) { let r2 = radius * radius; return PI * r2; } ``` Bad: ``` javascript function volume(radius) { const a = area(radius); return a * radius / 2 } ``` ## Installation You'll first need to install [ESLint](http://eslint.org): ``` $ npm i eslint --save-dev ``` Next, install `eslint-plugin-prefer-let`: ``` $ npm install eslint-plugin-prefer-let --save-dev ``` **Note:** If you installed ESLint globally (using the `-g` flag) then you must also install `eslint-plugin-prefer-let` globally. ## Usage Add `prefer-let` to the plugins section of your `.eslintrc` configuration file. You can omit the `eslint-plugin-` prefix: ```json { "plugins": [ "prefer-let" ] } ``` Then configure the rules you want to use under the rules section. ```json { "rules": { "prefer-let/prefer-let": 2 } } ``` ### Possible Conflicts This plugin may conflict with other plugins or configs that set `eslint prefer-const`. You can configure the rules to avoid this: ```json { "rules": { "prefer-let/prefer-let": 2, "prefer-const": "off" } } ```