null-ls.nvim VS typescript-language-server

Compare null-ls.nvim vs typescript-language-server and see what are their differences.

null-ls.nvim

Use Neovim as a language server to inject LSP diagnostics, code actions, and more via Lua. (by jose-elias-alvarez)
Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
null-ls.nvim typescript-language-server
164 53
3,554 1,699
- 4.1%
0.0 8.7
9 months ago 5 days ago
Lua TypeScript
GNU General Public License v3.0 or later GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

null-ls.nvim

Posts with mentions or reviews of null-ls.nvim. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-06.
  • cpp setting problem
    4 projects | /r/neovim | 6 Dec 2023
  • Being a bash developer in the 21st century
    4 projects | news.ycombinator.com | 22 Sep 2023
    you can use nvim then, it has shellcheck for diagnostics and formatting, like in vscode :)

    here the link to the config: https://github.com/jose-elias-alvarez/null-ls.nvim/blob/main...

  • Linting/formatting and LSP
    1 project | /r/neovim | 8 Sep 2023
    I use a lot of different languages generally and I'm running into issues around formatting. Is there any standard way to use LSP formatting by default and otherwise fallback to specific linter/formatting programs? I believe null-ls is the normal way of dealing with this, but since it's been archived, I'd rather not rely on it.
  • How to setup efm-langserver for pint formatter?
    3 projects | /r/neovim | 13 Jul 2023
    I've been using pint for formatting php files with null-ls.nvim. Few days ago null-ls.nvim has announced that the plugin will be archived in few months so I started migrating all my formatters and linter from null-ls to efm-langserver. I got other things such as prettier, black, isort, mypy, etc. working but can't get pint to work with php files: If I run pint via efm-langserver, everything is deleted from the buffer, and the saved file is formatted separately. How do I setup efm-langserver correctly to work with pint? Below is my config.yml for pint currently. yaml tools: pint: &pint format-command: "pint --no-interaction --quiet ${INPUT}" format-stdin: false languages: php: - <<: *pint Thank you.
  • Archiving Null-Ls
    1 project | news.ycombinator.com | 10 Jul 2023
  • null-ls will be archived
    1 project | /r/ThePrimeagenReact | 10 Jul 2023
    14 projects | /r/neovim | 9 Jul 2023
  • Why is nobody using CoC anymore?
    3 projects | /r/neovim | 3 Jul 2023
    Because null-ls.nvim & mason.nvim together do everything I wanted CoC for
  • Your favourite Neovim plugins?
    42 projects | /r/neovim | 21 Jun 2023
  • How can I get yapf, black, and other formatters working with pylsp?
    1 project | /r/neovim | 19 Jun 2023
    There is a good answer. I think you know lua and neovim config enough to pick things that you need. If you need a short answer, null-ls is the way.

typescript-language-server

Posts with mentions or reviews of typescript-language-server. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-12.
  • Helix - Front-End Power
    8 projects | dev.to | 12 Mar 2024
  • What is JSDoc and why you may not need typescript for your next project?
    8 projects | dev.to | 22 Jan 2024
    Besides the features TypeScript itself proposed, the most important thing it brought to the community was the ability to create cool features around this compiler that enhance the developer experience and productivity. Tools like tsserver, pretty ts errors, and many others are actively improving the ecosystem for both JavaScript and TypeScript writers.
  • A guide on Neovim's LSP client
    7 projects | dev.to | 13 Jan 2024
    Sometimes a language server can support multiple filetypes. An example of this is tsserver, the language server for javascript and typescript. In this case a filetype plugin can still work but there is an easier way to go about it.
  • Suspense your federated component with caution
    1 project | dev.to | 14 Oct 2023
    in this way the ts server can detect and parse the component from the microfronent, thanks to monorepos!
  • Let's write an Emacs treesitter major mode
    7 projects | news.ycombinator.com | 14 Sep 2023
    That was interesting, thanks for pointing it out

    I was tremendously sad to see that the Typescript Language Server wasn't owned by Microsoft <https://microsoft.github.io/language-server-protocol/impleme...>, since if there was any sanity in the world a spec bump would travel with a reference implementation showing how they envision such a thing being used

    But, I found that the Typescript Language Server that they did list does indeed have a semantic-tokens module in it, although it's much shorter than I would have expected from reading that section in the spec: https://github.com/typescript-language-server/typescript-lan...

  • How do I select which LSP is currently running?
    1 project | /r/HelixEditor | 17 Aug 2023
    I would like to use svelte language server when working on +page.server.ts files and not the typescript language server.
  • Formatting on save not working
    3 projects | /r/HelixEditor | 5 Jul 2023
    [[language]] name = "python" roots = ["pyproject.toml"] formatter = { command = "black", args = ["--quiet", "-"] } language-server = { command = "pyright-langserver", args = ["--stdio"] } config = {} auto-format = true [[language]] name = "rust" auto-format = true # [[language]] # name = "typescript" # auto-format = true # formatter = { command = "prettier", args = ["--parser", "typescript"]} # # pass format options according to https://github.com/typescript-language-server/typescript-language-server#workspacedidchangeconfiguration omitting the "[language].format." prefix. # config = { format = { "semicolons" = "insert", "insertSpaceBeforeFunctionParenthesis" = true } } [[language]] name = "tsx" formatter = { command = 'prettier', args = ["--parser", "typescript"] } auto-format = true [[language]] name = "javascript" auto-format = true formatter = { command = 'npx', args = ["prettier", "--config", ".prettierrc", "--parser", "javascript"] } # formatter = { command = "prettier", args = ["--parser", "javascript"]} [[language]] name = "css" formatter = { command = 'prettier', args = ["--parser", "css"] } [[language]] name = "markdown" # https://github.com/executablebooks/mdformat formatter = { command = "mdformat", args = ["-"] } [[language]] name = "json" formatter = { command = "prettier", args = ["--parser", "json"] } [[language]] name = "toml" auto-format = true # https://github.com/bd82/toml-tools/tree/master/packages/prettier-plugin-toml formatter = { command = "prettier", args = ["--parser", "toml"] } [[language]] name = "yaml" indent = { tab-width = 2, unit = " " } formatter = { command = "prettier", args = ["--parser", "yaml"] } [[language]] name = "astro" scope = "source.astro" injection-regex = "astro" file-types = ["astro"] roots = ["package.json", "astro.config.mjs"] language-server = { command = "astro-ls", args = ["--stdio"] } config = { "typescript" = { serverPath = "/Users/matteostara/.nvm/versions/node/v18.16.0/bin/typescript-language-server" }, "environment" = "node" }
  • Struggling with javascript completion with LSP
    2 projects | /r/emacs | 15 Jun 2023
    Depending on the language server version, you may be running into https://github.com/typescript-language-server/typescript-language-server/issues/631. I temporarily fixed it for me by simply sticking with an old enough server build, though judging by the latest typescript-language-server commits a very recent build from master should also work
  • There's another typescript LSP that wraps the official VSCode typescript extension and has almost the same features - vtsls
    6 projects | /r/neovim | 28 Apr 2023
    Before, I was using typescript-language-server as it is LSP compliant but it was slow and lacks the features of what VSCode's implementation has, like extracting functions, constants, types into interfaces or alias and single imports. Auto-completion was also not very predictive as sometimes it works and sometimes it doesn't. For instance, I was having trouble getting it to auto-complete common attributes like className or href in JSX projects. It could be that I may be doing something wrong but didn't find any solution on how to get it properly working.
  • What could cause my LSP to be so slow and sluggish? Takes anywhere from 1 to 8 seconds to show auto-completion results and hide/ unhide errors.
    7 projects | /r/neovim | 13 Apr 2023
    Then this is highly likely issue of typescript-language-server. You might consider opening an issue for it.

What are some alternatives?

When comparing null-ls.nvim and typescript-language-server you can also consider the following projects:

formatter.nvim

deno - A modern runtime for JavaScript and TypeScript.

nvim-lspconfig - Quickstart configs for Nvim LSP

neoformat - :sparkles: A (Neo)vim plugin for formatting code.

nvim-lsp-ts-utils - Utilities to improve the TypeScript development experience for Neovim's built-in LSP client.

StyLua - An opinionated Lua code formatter

nvim-lspinstall - Provides the missing :LspInstall for nvim-lspconfig

nvim-lint - An asynchronous linter plugin for Neovim complementary to the built-in Language Server Protocol support.

TypeScript - IO wrapper around TypeScript language services, allowing for easy consumption by editor plugins

efm-langserver - General purpose Language Server

neovim - Vim-fork focused on extensibility and usability