See a typo? Have a suggestion? Edit this page on Github
I recently reinstalled the OS on my laptop and very quickly ran into:
$ warp -bash: warp: command not found
This made me realize just how frequently I use the
warp executable in my day-to-day life, and decided to write a quick post about it.
How to install it
The executable may be available in your package manager. However, I recommend building/installing it with Stack:
- Install Stack, with
curl -sSL https://get.haskellstack.org/ | shor the Windows installer
stack install wai-app-static, or
stack install wai-app-static --resolver lts-14.20to be a bit more pedantic
- There is no step 3
If you don't have a Haskell toolchain set up, this will download a bunch of stuff and may take a bit. Sorry.
What it does
The Warp executable provides a simple file server. My most usually way of calling it is without any arguments, where it will serve the files in the current directory on port 3000. The two most common options I'll pass it are:
$ warp -d some-directory # serve from that directory $ warp -p 8080 # serve on a different port
You can use
warp --help for a full listing of options, though there aren't many.
Why it's useful
Simply: no config file. You can set up a dedicated file server using
nginx or others, but that takes much more effort. Often times, I want to simply generate some HTML and then view it on my phone, for example. This works out perfectly.
Along those lines, I highly recommend checking out ngrok, which will provide a temporary public URL to a locally running service. This can be a great way to share a locally running site with someone else. It's pretty common for me to have
warp running in one terminal and
ngrok http 3000 in another.
I've considered writing a blog post about Servius many times before, but there's never enough info to warrant a dedicated post. So now's a good time to mention it. Servius is a souped-up version of the Warp executable. In addition to serving static files, it has support for rendering Markdown (using Github-flavored CommonMark). I'll often use Servius instead of Warp when I'm drafting a blog post like this and want to check it out quickly.
Want to install Servius? Just run
stack install servius or
stack install servius --resolver lts-14.20.
One more shout-out: I really like the
bat tool, aka "a cat clone with wings." To get it, install Rust and run
cargo install bat, or check out the many other installation options. I enjoy getting syntax highlighting and paging when I want to look at files, without having to pop them open in
I may expand this list over time :)