| SU | MO | TU | WE | TH | FR | SA |
|---|---|---|---|---|---|---|
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 | 1 | 2 | 3 | 4 | 5 | 6 |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
Clojure の project.clj と deps.edn を理解する
Clojureのプロジェクト構成管理周りのしくみの理解があいまいだったので、調べてまとめた。
cryogenとかshadow cljsとかのプロジェクト生成のときは、README.mdの通りにコマンド打っただけで、project.cljとかdeps.ednのことがわかってなかった。
依存関係を追加するときに迷ったので、整理する・
あと、lein **も忘れるので整理する。
node.jsのnpm、rubyのgem、pythonのpip、perlのcpanに相当するもの。Leiningenの方が古くからあり、Leiningenの動き自体を拡張する仕組みもあるので、いろんな機能を持つ。
対してClojure-CLIはシンプルな単機能を持つ複数のCLIツールで目的を達成しようとする。
| ツール | 設定ファイル | 備考 |
|---|---|---|
| Leiningen | project.clj | JVMの設定とか、scriptingとかいろんな情報が入っている |
| Clojure-CLI | deps.edn | 本当に依存関係だけの情報 |
ちなみに.ednはclojure用の.jsonみたいなもんらしい。
設定ファイルに使われるのも納得。
npmとの対比で憶えるのが自分にはしっくりくる。
$ lein new <template-name> <project-name>create-xx-appのほうが近いか。
ネットからテンプレート探してきてそれに基づいて、ディレクトリ構成とか依存関係の情報を生成してくれる。
以下はオフラインでも利用可能。
lein new用のメタテンプレート$ lein search
で検索して、project.cljの:dependenciesに手で追加。$ lein deps でインストール。
コマンド1発でできる手段はない。
$ lein deps
対応するものはない。project.cljの:dependenciesから削除すればよい。
パッケージはどこにあるかというと、~/.m2にある。
容量気になるなら削除すればよい。
$ lein run
エントリポイントは、project.cljの:mainに書かれている。
直接対応するものはない。
$ lein <aliase-name>でproject.cljの:aliasesを起動できるがシェルスクリプトではない。
プラグインを入れるとかで対応はできると思われる。
$ lein publishでClojarsリポジトリに登録できる。
怖い。
cljdocすごい。
Gitリポジトリソースあればドキュメントが生成できる。
他の言語ではこういうの見たことない。
と思って調べたらcpanでもドキュメントホスティングしてる。
javadocとかrdocとかは組込みで、dirとdocがあるから十分。
(require 'clojure.repl)
(dir sample.core)
(doc sample.core/main)