2.6 KiB
description
| description |
|---|
| Info on how to evaluate Clojure code via nREPL using clj-nrepl-eval |
When you need to evaluate Clojure code you can use the
clj-nrepl-eval command (if installed via bbin) to evaluate code
against an nREPL server. This means the state of the REPL session
will persist between evaluations.
You can require or load a file in one evaluation of the command and when you call the command again the namespace will still be available.
Example uses
You can evaluate clojure code to check if a file you just edited still compiles and loads.
Whenever you require a namespace always use the :reload key.
How to Use
The following evaluates Clojure code via an nREPL connection.
Discover available nREPL servers:
clj-nrepl-eval --discover-ports
Evaluate code (requires --port):
clj-nrepl-eval --port <port> "<clojure-code>"
Options
-p, --port PORT- nREPL port (required)-H, --host HOST- nREPL host (default: 127.0.0.1)-t, --timeout MILLISECONDS- Timeout in milliseconds (default: 120000)-r, --reset-session- Reset the persistent nREPL session-c, --connected-ports- List previously connected nREPL sessions-d, --discover-ports- Discover nREPL servers in current directory-h, --help- Show help message
Workflow
1. Discover nREPL servers in current directory:
clj-nrepl-eval --discover-ports
# Discovered nREPL servers:
#
# In current directory (/path/to/project):
# localhost:7888 (clj)
# localhost:7889 (bb)
#
# Total: 2 servers
2. Check previously connected sessions (optional):
clj-nrepl-eval --connected-ports
# Active nREPL connections:
# 127.0.0.1:7888 (clj) (session: abc123...)
#
# Total: 1 active connection
3. Evaluate code:
clj-nrepl-eval -p 7888 "(+ 1 2 3)"
Examples
Discover servers:
clj-nrepl-eval --discover-ports
Basic evaluation:
clj-nrepl-eval -p 7888 "(+ 1 2 3)"
With timeout:
clj-nrepl-eval -p 7888 --timeout 5000 "(Thread/sleep 10000)"
Multiple expressions:
clj-nrepl-eval -p 7888 "(def x 10) (* x 2) (+ x 5)"
Reset session:
clj-nrepl-eval -p 7888 --reset-session
Features
- Server discovery - Use --discover-ports to find all nREPL servers (Clojure, Babashka, shadow-cljs, etc.) in current directory
- Session tracking - Use --connected-ports to see previously connected sessions
- Automatic delimiter repair - fixes missing/mismatched parens before evaluation
- Timeout handling - interrupts long-running evaluations
- Persistent sessions - State persists across invocations