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/ | sh
or the Windows installer - Run
stack install wai-app-static
, orstack install wai-app-static --resolver lts-14.20
to 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.
Also: Servius
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
.
Other tools?
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 vim
.
I may expand this list over time :)