JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 32285
  • Score
    100M100P100Q151590F
  • License MIT

fp-ts ESLint rules

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (eslint-plugin-fp-ts) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    badge npm npm

    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

    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:

    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"]
    }