問題タブ [boot-clj]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
clojure - clojure ブートでタスクの実行順序が変わるのはなぜですか?
タスクで使用comp
すると、実行順序は左から右になります。無名関数で使用するcomp
と、実行順序は右から左になります。この矛盾はどのように合理的ですか?
clojure - Boot clojure による自動化
できる限りチュートリアルに従おうとしていますが、私の人生では、ライブリロードが機能しないようです
私のディレクトリ構造は次のとおりです:-
私は次のbuild.bootを持っています
私のプロセス出力は問題ないようです
ws://localhost:9001 に接続するための adzerk/boot_reload/init653.cljs を書き込んでいます... boot_cljs_repl.cljs を書き込んでいます...
ファイル ウォッチャーを開始しています (終了するには CTRL-C)...
:require adzerk.boot-reload.init653 を main.cljs.edn に追加しています... ホスト 127.0.0.1 のポート 9000 で nREPL サーバーが起動しました - nrepl://127.0.0.1:9000 追加:require adzerk.boot-cljs-repl main.cljs.edn に... ClojureScript をコンパイルしています... ? js/main.js 2016-07-23 02:38:50.287:INFO::clojure-agent-send-off-pool-0: ログ初期化 @ 51878ms 2016-07-23 02:38:50.450:INFO:oejs.サーバー: clojure-agent-send-off-pool-0: jetty-9.2.10.v20150310 2016-07-23 02:38:50.501:INFO:oejs.ServerConnector: clojure-agent-send-off-pool-0: ServerConnector@4451c4ae{HTTP/1.1}{0.0.0.0:3000} を開始しました 2016-07-23 02:38:50.506:INFO:oejs.Server:clojure-agent-send-off-pool-0: @52097ms を開始しました Jetty を開始しましたhttp://localhost:3000でターゲット ディレクトリを書き込んでいます... 経過時間: 33.710 秒
URL にアクセスします...すべてチェックアウトします。次に、.cljs ファイルと .html ファイルを更新しようとしましたが、何も.
私はそれを理解していません...これはどのように機能すると思われますか?私は何を間違っていますか?
clojure - boot-clj プロジェクトで resources/public ディレクトリを使用する
サブディレクトリ public を保持するリソース ディレクトリを使用するブート プロジェクトをセットアップしようとしています。後者には、たとえば、すべての Web 関連コンテンツ、コンパイルされた clojurescript などを含める必要があります。
これは、公開することを意図していないリソースを保持したい場合に適しています。
追加の public ディレクトリなしで実行すると、完全に機能します。追加のサブディレクトリを使用しようとすると、エラーが発生します。関連する構成は次のとおりです。
build.boot で:
resources ディレクトリ内から:
一方、main.cljs.edn は次のようになります。
呼び出し時boot dev
に次のことが発生します: プロセスが手動で強制終了されるまで、ClojureScript はエラーでコンパイルを続けます。一部の相対パスに関連する再帰エラーのようです。
一方、長く実行し続けると、public/public/public/..
展開します。
これを修正できる提案はありますか?
アップデート
質問の更新版は次のとおりです。
次のリソース フォルダーの構造を考えてみましょう。
そして、build.boot の次の部分:
'myapp.server/handler は、resources/public からファイルを提供するだけであることを認識しています (wrap-resource
または同等の構成要素によって実装されていresources
ます。後者はデフォルトで "private" に設定されています。
しかし、問題はさらに早い段階で発生します。リソースディレクトリ全体を実行すると、もちろんboot dev
ターゲットディレクトリに再現されます。private_file.txt
(これは意図された動作ですか? ファイルが非常に大きくなる可能性があり、ディスク容量の 2 倍を消費する可能性があることを意味します)
この時点で、 main 内の :asset-path がこれにどのように影響するかはわかりません。ここの例では、「js/main.out」のままにしていますが、これは間違っている可能性があります。
emacs - cider-jack-in の後に起動タスクを開始する
cider-jack-in 経由でブート プロジェクトを開始した後、特定のブート タスクを開始するにはどうすればよいですか?
repl(dir boot.user)
では、 で定義されたタスクが明らかになりbuild.boot
ます。ただし、eg で呼び出し(dev)
ても効果はなく、少なくともそのタスクで定義されたリング サーバーには接続できません。boot dev
コマンドラインから使用すると機能します。cider-jack-in に切り替える必要がある理由は、shell/cider-connect アプローチでは、デフォルト シェル (すべてのコンパイル メッセージ)。
emacs - cider-connect内のブートリフレッシュ
で推奨される手順に従った後、
https://github.com/samestep/boot-refresh
ブート プロジェクト内から cider-jack-in を使用すると、意図したホット リロード動作が機能します。
ただし、次のシナリオでは機能しません。このブート タスクを検討してください。
関連部分は:nrepl
キーワードです。
このタスクが起動された後、ポート 4000 で nrepl サーバーに接続できます。これには、開発中にアプリケーションの実際の状態にアクセスできるという利点があります。(詳細については、この投稿を参照してください)
これは、 を介して行うことができますcider-connect
。ただし、ホットリロードはなくなりました。この:reload true
オプションは、ここで混乱する可能性があります。これは、http 要求が完了したときにのみソースのリロードをトリガーします。しかし、ブートリフレッシュのより一般的なアプローチを探しています。
注: ここでの意図は、サーバー側でライブ リロード動作を行うことです。これは、クライアント側で知られている概念 (figwheel または boot-reload) に似ています。
clojure - boot-clj: ファイルセットから特定のフォルダーのみを抽出するタスク + 名前を変更する
リソース フォルダーを持つ Clojure プロジェクトを考えてみましょう。このフォルダーには、いくつかのファイルと、いくつかの Web コンテンツを保持する "public" という別のフォルダーが含まれています。
ClojureScript をコンパイルし、パブリック ディレクトリだけをグローバル ファイルシステムの別のディレクトリに移動するブート タスクを探しています。最後に、フォルダーの名前を「project- version」に変更する必要があります。
以下はmove-files
、ディレクトリではなくファイルに対してのみ機能するため、機能しません。しかし、私はそれがアイデアを明確にしていると思います:
/some/path/web_dirs/My-0.1.0
この後、プロジェクトのすべてのパブリック ファイルのコンパイル済みバージョンを含むフォルダーが存在するはずです。