This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2018-04-20
Channels
- # aws-lambda (8)
- # beginners (37)
- # cider (43)
- # cljs-dev (12)
- # clojure (121)
- # clojure-italy (19)
- # clojure-nl (1)
- # clojure-poland (1)
- # clojure-russia (14)
- # clojure-spec (6)
- # clojure-uk (98)
- # clojurescript (28)
- # core-async (1)
- # cursive (7)
- # datomic (4)
- # emacs (63)
- # events (8)
- # fulcro (19)
- # graphql (4)
- # hoplon (3)
- # mount (1)
- # nrepl (101)
- # off-topic (15)
- # om (3)
- # pedestal (2)
- # portkey (31)
- # protorepl (2)
- # re-frame (26)
- # reagent (26)
- # reitit (2)
- # shadow-cljs (58)
- # spacemacs (8)
- # specter (5)
- # sql (56)
- # test-check (11)
- # tools-deps (48)
- # vim (52)
TIL, if foo
contains
(ns foo.core)
(prn ::x)
(require 'clojure.zip)
(prn #'clojure.zip/lefts)
(ns bar.core)
(prn ::x)
then
clj -Sdeps '{:deps {org.clojure/clojurescript {:mvn/version "1.10.238"}}}' -m cljs.main -re node foo
prints
:foo.core/x
#'clojure.zip/lefts
:bar.core/x
It certainly makes for a more flexible scripting experience if you can have multiple top level require
forms sprinkled in your script.
Cool. The motivation—if interested—is a desire to create scripts that are “standalone” in that they employ shebang and specify their own deps. This works on Linux and macOS, but relies on having strings before the ns
form.
#!/usr/bin/env bash
"exec" "clojure" "-Sdeps" "{:deps {org.clojure/clojurescript {:mvn/version \"1.10.238\"} funcool/tubax {:mvn/version \"0.2.0\"}}}" "-m" "cljs.main" "-re" "node" "$0" "$@"
(ns foo.core
(:require [tubax.core :as tubax]))
(prn (tubax.core/xml->clj "<h1>foo</h1>"))
(prn *command-line-args*)
@r0man based on my reading your cljs.loader patch is conservative wrt. its goal? If the dependency graph changes that’s not really accounted for?
@dnolen Here's a less conservative patch: https://dev.clojure.org/jira/secure/attachment/18090/CLJS-2682-recompile-loader-in-repl.patch