No description
Find a file
Barrett Ruth f42f958c24
feat: replace npm live-server with pure-Lua HTTP server (#29)
## Problem

The plugin requires users to install Node.js and the `live-server` npm
package globally. This is a heavyweight external dependency for what
amounts to a simple local dev-server workflow, and it creates friction
for users who don't otherwise need Node.js.

## Solution

Replace the npm shell-out with a pure-Lua HTTP server built on `vim.uv`
(libuv bindings), eliminating all external dependencies. The new server
supports static file serving, SSE-based live reload, CSS hot-swap
without full page reload, directory listings, and recursive file
watching with configurable debounce.

Minimum Neovim version is bumped to 0.10 for `vim.uv` and `vim.ui.open`.
The old `args`-based config is automatically migrated with a deprecation
warning.

Closes #28.
2026-03-02 23:16:35 -05:00
.github feat: replace npm live-server with pure-Lua HTTP server (#29) 2026-03-02 23:16:35 -05:00
doc feat: replace npm live-server with pure-Lua HTTP server (#29) 2026-03-02 23:16:35 -05:00
lua/live-server feat: replace npm live-server with pure-Lua HTTP server (#29) 2026-03-02 23:16:35 -05:00
plugin feat: replace npm live-server with pure-Lua HTTP server (#29) 2026-03-02 23:16:35 -05:00
.editorconfig chore: update project configs to match cp.nvim 2026-02-03 21:00:07 -05:00
.gitignore feat: replace npm live-server with pure-Lua HTTP server (#29) 2026-03-02 23:16:35 -05:00
.luarc.json feat: replace npm live-server with pure-Lua HTTP server (#29) 2026-03-02 23:16:35 -05:00
.pre-commit-config.yaml feat: replace npm live-server with pure-Lua HTTP server (#29) 2026-03-02 23:16:35 -05:00
flake.lock feat: replace npm live-server with pure-Lua HTTP server (#29) 2026-03-02 23:16:35 -05:00
flake.nix feat: replace npm live-server with pure-Lua HTTP server (#29) 2026-03-02 23:16:35 -05:00
LICENSE fix(ci): add license 2026-02-03 21:28:34 -05:00
live-server.nvim-scm-1.rockspec chore: add CI, pre-commit, and luarocks configs 2026-02-03 21:01:57 -05:00
README.md feat: replace npm live-server with pure-Lua HTTP server (#29) 2026-03-02 23:16:35 -05:00
selene.toml feat: replace npm live-server with pure-Lua HTTP server (#29) 2026-03-02 23:16:35 -05:00
stylua.toml chore: update project configs to match cp.nvim 2026-02-03 21:00:07 -05:00
vim.yaml feat: replace npm live-server with pure-Lua HTTP server (#29) 2026-03-02 23:16:35 -05:00

live-server.nvim

Live reload HTML, CSS, and JavaScript files inside Neovim. No external dependencies — the server runs entirely in Lua using Neovim's built-in libuv bindings.

Dependencies

  • Neovim >= 0.10

Installation

Install with your package manager or via luarocks:

luarocks install live-server.nvim

Documentation

:help live-server.nvim

Known Limitations

  • No recursive file watching on Linux: libuv's uv_fs_event only supports recursive directory watching on macOS and Windows. On Linux (inotify), the recursive flag is silently ignored, so only files in the served root directory trigger hot-reload. Files in subdirectories (e.g. css/style.css) will not be detected. See libuv#1778.