Introduction
eslint-plugin-math is ESLint plugin related to Math object and Number.
Features
ESLint plugin related to Math object and Number.
You can check on the Online DEMO.
Documentation
See documents.
Installation
npm install --save-dev eslint eslint-plugin-math
Requirements
- ESLint v8.57.0 and above
- Node.js v18.x, v20.x and above
Usage
Configuration
New Config (eslint.config.js)
Use eslint.config.js file to configure rules. See also: https://eslint.org/docs/latest/use/configure/configuration-files-new.
Example eslint.config.js:
import eslintPluginMath from 'eslint-plugin-math';
export default [
// add more generic rule sets here, such as:
// js.configs.recommended,
eslintPluginMath.configs.recommended,
{
rules: {
// override/add rules settings here, such as:
// 'math/prefer-math-trunc': 'error'
}
}
];
This plugin provides configs:
*.configs.recommended... Recommended config provided by the plugin.
See the rule list to get the rules that this plugin provides.
Legacy Config (.eslintrc)
Use .eslintrc.* file to configure rules. See also: https://eslint.org/docs/latest/use/configure/.
Example .eslintrc.js:
module.exports = {
extends: [
// add more generic rulesets here, such as:
// 'eslint:recommended',
'plugin:math/recommended-legacy'
],
rules: {
// override/add rules settings here, such as:
// 'math/prefer-math-trunc': 'error'
}
}
This plugin provides configs:
plugin:math/recommended-legacy... Recommended config provided by the plugin.
See the rule list to get the rules that this plugin provides.
Rules
The --fix option on the command line automatically fixes problems reported by rules which have a wrench below.
The rules with the following star are included in the configs.
Math Rules
| Rule ID | Description | Fixable | RECOMMENDED |
|---|---|---|---|
| math/abs | enforce the conversion to absolute values to be the method you prefer | ||
| math/no-static-infinity-calculations | disallow static calculations that result in infinity | ||
| math/no-static-nan-calculations | disallow static calculations that result in NaN | ||
| math/prefer-exponentiation-operator | enforce the use of exponentiation (**) operator instead of other calculations |
||
| math/prefer-math-cbrt | enforce the use of Math.cbrt() instead of other cube root calculations | ||
| math/prefer-math-e | enforce the use of Math.E instead of other ways | ||
| math/prefer-math-hypot | enforce the use of Math.hypot() instead of other hypotenuse calculations | ||
| math/prefer-math-ln10 | enforce the use of Math.LN10 instead of other ways | ||
| math/prefer-math-ln2 | enforce the use of Math.LN2 instead of other ways | ||
| math/prefer-math-log10 | enforce the use of Math.log10() instead of other calculation methods. | ||
| math/prefer-math-log10e | enforce the use of Math.LOG10E instead of other ways | ||
| math/prefer-math-log2 | enforce the use of Math.log2() instead of other calculation methods. | ||
| math/prefer-math-log2e | enforce the use of Math.LOG2E instead of other ways | ||
| math/prefer-math-pi | enforce the use of Math.PI instead of literal number | ||
| math/prefer-math-sqrt | enforce the use of Math.sqrt() instead of other square root calculations | ||
| math/prefer-math-sqrt1-2 | enforce the use of Math.SQRT1_2 instead of other ways | ||
| math/prefer-math-sqrt2 | enforce the use of Math.SQRT2 instead of other ways | ||
| math/prefer-math-sum-precise | enforce the use of Math.sumPrecise() instead of other summation methods | ||
| math/prefer-math-trunc | enforce the use of Math.trunc() instead of other truncations | ||
| math/prefer-number-epsilon | enforce the use of Number.EPSILON instead of other ways | ||
| math/prefer-number-is-finite | enforce the use of Number.isFinite() instead of other checking ways | ||
| math/prefer-number-is-integer | enforce the use of Number.isInteger() instead of other checking ways | ||
| math/prefer-number-is-nan | enforce the use of Number.isNaN() instead of other checking ways | ||
| math/prefer-number-is-safe-integer | enforce the use of Number.isSafeInteger() instead of other checking ways | ||
| math/prefer-number-max-safe-integer | enforce the use of Number.MAX_SAFE_INTEGER instead of other ways | ||
| math/prefer-number-max-value | enforce the use of Number.MAX_VALUE instead of literal number | ||
| math/prefer-number-min-safe-integer | enforce the use of Number.MIN_SAFE_INTEGER instead of other ways | ||
| math/prefer-number-min-value | enforce the use of Number.MIN_VALUE instead of literal number |
Prior Art
- https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-math-trunc.md
- https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-modern-math-apis.md
- https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-number-properties.md
Contributing
Welcome contributing!
Please use GitHub's Issues/PRs.
Development Tools
npm testruns tests and measures coverage.npm run updateruns in order to update readme and recommended configuration.
License
See the LICENSE file for license rights and limitations (MIT).