Как скомпилировать формы Clojurescript из Clojure?

Я использую clj-webdriver для выполнения некоторых тестов на основе селена на веб-приложении Clojurescript. Иногда в самом приложении есть что-то, что я хочу иметь возможность возиться во время теста. Я вижу, что clj-webdriver имеет что-то, называемое (execute-script js args), которое берет строку кода Javascript и запускает ее в текущем браузере тестирования. Я тестировал это и, похоже, работает. Я бы хотел передать код clojurescript на execute-script. Мне нужно что-то, что скомпилирует мою форму Clojure в код Clojurescript.

Я вижу следующее question, которое относится к нему. В нем говорится использовать функцию js/emit из муфты. Я искал клатч и обнаружил, что он упоминается только в (view) в cljs-views.clj Я попытался выполнить следующее в repl:

user> (use 'com.ashafa.clutch.cljs-views)  
  nil  
user> view 
  <core$comp$fn__4034 [email protected]> 
user> js/emit 
  CompilerException java.lang.RuntimeException: No such namespace: js, #compiling (NO_SOURCE_PATH:1)   
user>

Это не удивительно, как могли бы быть js в регулярном Clojure namesapce? Но как я могу использовать эту (или любую другую) систему для создания кода Clojurescript (javascript), который я могу передать на execute-script?

Ответ 1

Используйте функцию cljs.closure/build:

(use '[cljs.closure :only [build]])
(build '(print "hello") {:optimizations :simple :pretty-print true})

В комментарии ниже есть closure.clj. Есть опции для вывода в файл.