我想将某些库依赖项作为一个整体添加到 LightTable,这样当我在学习新东西时,我不必创建一个整体的新项目。
假设我希望始终能够访问这些库:math.combinatorics 和 math.numeric-tower。
Lighttable 似乎正在从 leinigen 调用 repl,所以我真的需要在那里添加一些东西吗?
见https://github.com/LightTable/LightTable/blob/master/project.clj
我想将某些库依赖项作为一个整体添加到 LightTable,这样当我在学习新东西时,我不必创建一个整体的新项目。
假设我希望始终能够访问这些库:math.combinatorics 和 math.numeric-tower。
Lighttable 似乎正在从 leinigen 调用 repl,所以我真的需要在那里添加一些东西吗?
见https://github.com/LightTable/LightTable/blob/master/project.clj
它将调用 Leiningen 的 repl。除了将依赖项添加到 LightTable 之外,您还可以将它们添加到Leiningen 配置文件(~/.lein/profiles.clj) 文件可能看起来像这样,您的依赖项如下所示:
{:user {:dependencies [[math.combinatorics "x.x.x"]
[math.numeric-tower "x.x.x"]]}}
一般来说,这不是一个好主意。这将是一个全球性的事情,并且可能会在未来给您带来问题。如果您创建一个应用程序,您可能会发现这两个库在它们不用于其他人或在不同的计算机上时可用。
更好的选择是使用 Leiningen 创建一个新项目。然后你可以编辑你的 project.clj 文件看起来像这样
(defproject math-thing "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:dependencies [[org.clojure/clojure "1.6.0"]
[math.combinatorics "x.x.x"]
[math.numeric-tower "x.x.x"]])
然后在编辑您的 clj 文件时,LightTable 使用您的 project.clj 文件来启动 instrepl 并将解决任何需要的依赖项。
例如,使用 leiningen 配置文件~/.lein/profiles.clj
并定义一个:injections [ ... ]
节点来执行(require '[ ])
和导入、引用 Clojure 和您拥有的其他项目。我通常更喜欢在我的开发配置文件中至少存在Alembic(包装 Maven/Sonatype),这样我就可以下载、安装在 maven 中,然后使用宏/函数包装器一次性重新加载类路径和项目,distill*
以防止加载时间过长用户空间中包含的库太多。几乎这是我通常希望在任何 REPL 或 LT InstaRepl 中出现的唯一功能,我将开发和调试片段放在项目./dev/user.clj
中,以保持大多数杂乱无章的东西项目特定。