How to add eslint to neovim

using npm global install vscode-langservers-extracted. This will give your editor access to vscode-eslint-language-server.

add the appropriate packages

{
    "neovim/nvim-lspconfig",
    config = function()
      require "plugins.configs.lspconfig"
    end, -- Override to setup mason-lspconfig
  },
  {
    "jose-elias-alvarez/null-ls.nvim",
  },
  {
    "MunifTanjim/eslint.nvim",
    config = function()
      require "custom.configs.eslint"
    end,
  },

I have a custom.configs.eslint file that contains other eslint configs

local null_ls = require "null-ls"
local eslint = require "eslint"

null_ls.setup()

eslint.setup {
  bin = "eslint", -- or `eslint_d`
  code_actions = {
    enable = true,
    apply_on_save = {
      enable = true,
      types = { "directive", "problem", "suggestion", "layout" },
    },
    disable_rule_comment = {
      enable = true,
      location = "separate_line", -- or `same_line`
    },
  },
  diagnostics = {
    enable = true,
    report_unused_disable_directives = false,
    run_on = "type", -- or `save`
  },
}

then in your lspconfig configuration file, add your eslint

--                                                               here --v
local servers = { "lua_ls", "html", "cssls", "tsserver", "clangd", "eslint" }
local lspConfig = require "lspconfig"

for _, lsp in ipairs(servers) do
  lspConfig[lsp].setup {
    on_attach = M.on_attach,
    capabilities = M.capabilities,
  }
end

Tools to help with custom eslint making

AST Explorer