11
我有一些clojure函數,我想在我開始clojure REPL時預先加載。除非您在REPL的上下文中使用它們,否則這些函數的用處不大。如何在leiningen repl中預加載clojure文件?
如果有幫助,我通常會使用leiningen爲我開始clojure REPL。
我如何告訴clojure(或leiningen,如果它不能通過平面clojure)預加載包含這些定義的clojure文件給我?
我有一些clojure函數,我想在我開始clojure REPL時預先加載。除非您在REPL的上下文中使用它們,否則這些函數的用處不大。如何在leiningen repl中預加載clojure文件?
如果有幫助,我通常會使用leiningen爲我開始clojure REPL。
我如何告訴clojure(或leiningen,如果它不能通過平面clojure)預加載包含這些定義的clojure文件給我?
有幾種方法在我最喜歡的方法是如此讓你在默認REPL命名想要的代碼the leiningen sample project 一個這樣描述到
/path/to/project/dev/user.clj做:
(ns user)
(def foo 42)
,並添加這樣一行到project.clj文件:
(defproject hello "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.5.1"]]
:source-paths ["dev"])
這清楚地表明,這是一個,而小號開發直到將其加載到默認名稱空間中。
當您運行nrepl-jack-in
形式的emacs或「雷音REPL」形成的殼,你應該用user>
命名空間與您的代碼加載打招呼:
; nREPL 0.1.6
user> foo
42
+1的出色鏈接。你是否也可以在你的答案中包含一個爲_any_項目執行此操作的方法(例如,使用'〜/ .lein/profiles.clj'),並假設我沒有使用emacs(即,沒有'nrepl-jack-in ',只是普通的終端屏幕)? – djhaskin987
將這部分內容添加到anwser中,並且爲了全局進行設置,最好將.lein/profiles.clj中的配置文件中的repl-options:init用於定義用戶名稱空間。 –
我認爲如果將額外的':source-paths'條目放入配置文件中會更合適。我認爲':dev'配置文件會特別合適。正如答案所表達的那樣,無論代碼是在'dev'下面的,還是一直被包含在項目中。 – Geoff