1

リソース フォルダーを持つ Clojure プロジェクトを考えてみましょう。このフォルダーには、いくつかのファイルと、いくつかの Web コンテンツを保持する "public" という別のフォルダーが含まれています。

ClojureScript をコンパイルし、パブリック ディレクトリだけをグローバル ファイルシステムの別のディレクトリに移動するブート タスクを探しています。最後に、フォルダーの名前を「project- version」に変更する必要があります。

以下はmove-files、ディレクトリではなくファイルに対してのみ機能するため、機能しません。しかし、私はそれがアイデアを明確にしていると思います:

(def project-name "My")
(def project-version "0.1.0")

(deftask store-web-dir []
  (let [dir-name (format "%s-%s" project-name project-version)]
    (comp
     (cljs :optimizations :advanced)
     (move-files :files {"public" dir-name})  ;; should rename the dir public to ..
     (copy :output-dir "/some/path/web_dirs"
           :matching #{(re-pattern (str "^" dir-name  "$"))}))))

/some/path/web_dirs/My-0.1.0この後、プロジェクトのすべてのパブリック ファイルのコンパイル済みバージョンを含むフォルダーが存在するはずです。

4

2 に答える 2

1

siftあなたをtarget助けるかもしれません(boot sift -h)。

私はあなたがここで説明していることと同様のことをします: https://github.com/timothypratley/voterx/blob/master/build.boot

(sift :invert true :include #{#"js/devcards.out" #"js/app\.out" #"\S+\.cljs\.edn"})
(target :dir #{"public"})

target はファイルを特定の出力ディレクトリに配置します。バージョンに基づいて変更できると確信しています。何かのようなもの(str "public" +version+)

要約すると、cljs ビルド自体の外でそれを行うことは、おそらくチケットです。

于 2016-08-15T21:23:52.800 に答える