Does anyone know a way? There was lumo, but it’s not maintained anymore.
Here is an example which also includes a library to play with in the Node.js REPL:
clj -Sdeps '{:deps {org.clojure/clojurescript {:mvn/version "1.10.597"} funcool/promesa {:mvn/version "6.0.2"}}}' -M -m cljs.main -re node
The clj command is the Clojure CLI tool.
Is there something more polished? I feel that clojurescript REPL needs its own executable.
There’s also Planck: https://planck-repl.org/ though it uses JavaScript Core instead of Node and is Mac and Linux only.
I specifically need to use NodeJS because I want to utilize npm packages interactively on clojurescript REPL.
Planck is dead, by the way. GitHub - mfikes/ambly: ClojureScript REPL into embedded JavaScriptCore is less dead if you want JavscriptCore clojurescript REPL.
I think a hack is to create an executable that executes
clj -M -m cljs.main -re node
in a clojurescript project folder.
You can just add yourself a shell alias if you want a short command.
in .bashrc or .zshrc:
alias noderepl='clj -M -m cljs.main -re node'
Also, I don’t think planck is dead, I think Amby is different, its not the newer planck, planck used to use Amby under the hood but then the objective-c was rewritten to portable c to support linux.
Another way to do it is
~/.config/deps.edn
{:deps {org.clojure/clojurescript {:mvn/version "1.10.xxx"}
funcool/promesa {:mvn/version "x.x.x"}}}
~/.local/bin/cljs-node-repl
#!/bin/sh
deps=`cat ~/.config/deps.edn`
clj -Sdeps "${deps}" -M -m cljs.main -re node
You need to go read about the deps.edn aliases, you’re making this way more complicated.
See: How to turn `clj -m cljs.main` into a single command line? - #2 by alexmiller
If you want to try out Node.js libraries with a light-weight CLJS scripting environment, you can also try out the brand new GitHub - borkdude/nbb: Ad-hoc CLJS scripting on Node.js.. REPL not yet implemented, but in the future there will probably even be nREPL support.
I think that’s a way.
@catdog why exactly you are avoiding a project structure? Seems that a simple node-script shadow-cljs target is perfect for what you want…
Because a projct structure is not needed for a quick REPL session.
Where will those npm packages be located? Will there be a package.json? If so you could npm install shadow-cljs there and put a shadow-cljs.edn in the same directory (potentially just {}, if you don’t need any CLJS related config). That is about the bare minimum “project structure”. You’ll probably want to add :source-paths and :dependencies at some point but :builds you don’t need if you just want to REPL.
npx shadow-cljs node-repl will then give you a quick and easy node REPL without too much work?
How to turn `clj -m cljs.main` into a single command line? - #2 by alexmiller is a better way to do things outside project structures.
