eslint-plugin-fp-ts
v0.3.2
Published
fp-ts ESLint rules
Downloads
120,727
Maintainers
Readme
eslint-plugin-fp-ts
A collection of ESLint rules for fp-ts
Installation
Assuming ESlint is installed locally in your project:
# npm
npm install --save-dev eslint-plugin-fp-ts
# yarn
yarn add --dev eslint-plugin-fp-ts
Then enable the plugin in your .eslintrc
config
{
"plugins": ["fp-ts"]
}
and enable the rules you want, for example
{
"plugins": ["fp-ts"],
"rules": {
"fp-ts/no-lib-imports": "error"
}
}
If you want to enable rules that require type information (see the table below), then you will also need to add some extra info:
module.exports = {
plugins: ["fp-ts"],
parserOptions: {
tsconfigRootDir: __dirname,
project: ["./tsconfig.json"],
},
rules: {
"fp-ts/no-discarded-pure-expression": "error",
},
};
If your project is a multi-package monorepo, you can follow the instructions here.
⚠️ Note that you will need to make the ESLint config file a .js file, due to the need of setting
tsconfigRootDir
to__dirname
. This is necessary to make both editor integrations and the CLI work with the correct path. More info here: https://github.com/typescript-eslint/typescript-eslint/issues/251
List of supported rules
| Rule | Description | Fixable | Requires type-checking |
| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | :-----: | :--------------------: |
| fp-ts/no-lib-imports | Disallow imports from fp-ts/lib/
| 🔧 | |
| fp-ts/no-pipeable | Disallow imports from the pipeable
module | 🔧 | |
| fp-ts/no-module-imports | Disallow imports from fp-ts modules | 🔧 | |
| fp-ts/no-redundant-flow | Remove redundant uses of flow
| 🔧 | |
| fp-ts/prefer-traverse | Replace map
+ sequence
with traverse
| 💡 | |
| fp-ts/prefer-chain | Replace map
+ flatten
with chain
| 💡 | |
| fp-ts/prefer-bimap | Replace map
+ mapLeft
with bimap
| 💡 | |
| fp-ts/no-discarded-pure-expression | Disallow expressions returning pure data types (like Task
or IO
) in statement position | 💡 | 🦄 |
Fixable legend:
🔧 = auto-fixable via --fix
(or via the appropriate editor configuration)
💡 = provides in-editor suggestions that need to be applied manually
Configurations
Recommended
The plugin defines a recommended
configuration with some reasonable defaults.
To use it, add it to the extends
clause of your .eslintrc
file:
{
"extends": ["plugin:fp-ts/recommended"]
}
The rules included in this configuration are:
Recommended requiring type-checking
We also provide a recommended-requiring-type-checking
which includes
recommended rules which require type information.
This configuration needs to be included in addition to the recommended
one:
{
"extends": [
"plugin:fp-ts/recommended",
"plugin:fp-ts/recommended-requiring-type-checking"
]
}
👉 You can read more about linting with type information, including performance considerations here
All
The plugin also defines an all
configuration which includes every available
rule.
To use it, add it to the extends
clause of your .eslintrc
file:
{
"extends": ["plugin:fp-ts/all"]
}