{"id":19765,"library":"eslint-plugin-fp","title":"eslint-plugin-fp","description":"ESLint plugin with 18 rules enforcing functional programming style in JavaScript. Version 2.3.0 is the latest (2017), with no new releases since. It forbids imperative constructs like loops, mutation, classes, this, and null. Differentiates from eslint-plugin-functional by broader rule set and stricter defaults. Works with ESLint >=3 and Node >=4.","status":"maintenance","version":"2.3.0","language":"javascript","source_language":"en","source_url":"https://github.com/jfmengels/eslint-plugin-fp","tags":["javascript","eslint","plugin","eslint-plugin","eslintplugin","fp","FP","function","functional"],"install":[{"cmd":"npm install eslint-plugin-fp","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-plugin-fp","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-plugin-fp","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency required to run the plugin","package":"eslint","optional":false}],"imports":[{"note":"Use plugin:fp prefix when extending.","wrong":"extends: 'eslint-plugin-fp/recommended'","symbol":"recommended config","correct":"extends: ['plugin:fp/recommended']"},{"note":"Rules are accessed via ESLint's plugin system, not directly imported.","wrong":"const fpPlugin = require('eslint-plugin-fp')","symbol":"rules","correct":"import from ESLint config; require('eslint-plugin-fp') is not needed directly"},{"note":"Rule names must be prefixed with fp/.","wrong":"rules: { 'no-let': 'error' }","symbol":"single rules","correct":"rules: { 'fp/no-let': 'error' }"}],"quickstart":{"code":"// Install: npm install --save-dev eslint eslint-plugin-fp\n// .eslintrc.json\n{\n  \"plugins\": [\"fp\"],\n  \"extends\": \"plugin:fp/recommended\",\n  \"rules\": {\n    \"fp/no-let\": \"error\",\n    \"fp/no-loops\": \"error\",\n    \"fp/no-mutation\": \"error\"\n  }\n}","lang":"javascript","description":"Shows how to configure eslint-plugin-fp with recommended config and enable additional rules."},"warnings":[{"fix":"Consider eslint-plugin-functional or eslint-plugin-ramda for maintained alternatives.","message":"Plugin is no longer actively maintained; last release 2017.","severity":"deprecated","affected_versions":">=2.0.0"},{"fix":"Use only functional array methods and avoid mutating methods.","message":"Rules are very strict and may conflict with common patterns like array methods (mutating methods rule flags .sort, .reverse).","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use Maybe/Option patterns or disable the rule.","message":"The no-nil rule forbids both null and undefined, which can break code relying on undefined checks.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Run npm install --save-dev eslint-plugin-fp and ensure it's listed in plugins: [\"fp\"].","cause":"Plugin not installed or not properly referenced in plugins array.","error":"ESLint couldn't find the plugin \"eslint-plugin-fp\"."},{"fix":"Check that plugin is in plugins array and rule name is exactly 'fp/no-let'.","cause":"Rule name misspelled or plugin not loaded.","error":"Definition for rule 'fp/no-let' was not found."},{"fix":"Use 'error' or ['error', options] not just options.","cause":"Rule configuration uses wrong format.","error":"Configuration for rule \"fp/no-mutation\" is invalid."}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}