問題タブ [shake-build-system]
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.
shake-build-system - アクションからシェイク ルールを生成する
プロジェクト内のすべての「Makefile」を検索し、それらに基づいてルールを生成したいと考えています。ただし、(意図的に) Action から逃れることはできないように見えます。そのため、代わりに「Makefile」スキャナーをシェイク機能の前の IO 操作に持ち上げました。
より良い方法はありますか?
shake-build-system - Shake ファイル パターンで環境変数を補間するにはどうすればよいですか?
私の Makefile では、出力ディレクトリをハードコーディングするよりも環境変数で定義することを好みます (設定されていない場合は、妥当なデフォルト値を使用します)。たとえば、Make ルールは次のようになります。
Shake で同様の目標を達成する方法はまだわかりません。環境変数の値または適切なデフォルト値を取得するために を使用するのが好きgetEnvWithDefault
ですが、バインドやラムダでそれをバッシングしても、(*>)
.
で使用するために FilePattern で環境変数を補間するにはどうすればよいでしょ(*>)
うか?
haskell - シェイク: 無効なステートメント: インポート Development.Shake
シェイクを使用する最初の試みは、ここの指示に従おうとしました: https://github.com/ndmitchell/shake/blob/master/docs/Manual.md#readme
makefile をそのままコピーして、shake を実行しました。シェイクプリントshake: Invalid statement: import Development.Shake
。私が最初に考えたのは、これらの import ステートメントが冗長化された新しいバージョンがリリースされたのではないかということでした。だから私はそれらをコメントアウトして得ましたshake: Invalid statement: -- import Development.Shake
。だから私はそれらを削除しました。出力は次のとおりです。
GHC は makefile をうまくコンパイルします。デバッグするために他に何をすればよいのかよくわかりません (私は Haskell の専門家にはほど遠いです!)。
多少関連して(少なくともチュートリアルには)shake --demo
、もはや存在しないようです。
shake-build-system - 生成されたファイルに応じて
need
生成されたファイルに対するルールの正しい方法は何ですか? これが私が試したことです:
generated
ただし、これにより、再実行されないというルールが発生するため、実行a.out
を繰り返しても同じままです。
haskell - 入力の変更に依存する Shake ルールを定義する方法
exe
Shake を使用して、一連の実行可能ファイル ( 、dll
など)に依存するルールを定義したいと考えています。ただし、それらを使用する前に、デジタル署名する必要があります。「署名」は実際には新しいファイルを生成しないため、署名された後のファイルのみにルールが依存するようにするにはどうすればよいですか?
編集:曖昧さ回避は順調です。私のルールはこれらのファイルの一部を生成しますが、すべてではありません。一部はサードパーティであり、リポジトリの一部です。したがって、どういうわけか、署名された後、これらの静的ファイルに依存する必要があります。
haskell - シェイクを使用して、ビルド時に不明な一連のファイルのルールを定義します
Shake を使用して複雑なビルド スクリプトを開発していますが、(今のところ) Visual Studio ソリューションを使用してすべてのバイナリをビルドしています。このため、1 回のスイープで数十のファイルを作成するルールを定義する必要があります。ビルドが完了するまで、ビルドの出力がどうなるかわかりません。
たとえば、次のようなルールを書きたいとします。
しかし、現状では、どのように構築するかを正式に定義するルールがないため、のルールは*.test-results
どのように構築するかを知りません。testExe
どうすればこれを回避できますか?
haskell - 構築不可能な目標を削除するには?
ソースがなくなったがクリーニングせずにファイルを削除したいと思います。
インクリメンタル ビルドの部分的なクリーニングはサポートされていますか? この場合、以前のビルドで使用された一連のソース ファイルと比較し、なくなったファイルをクリーンアップする方法を定義できると思います。
haskell - an の内容から規則を動的に生成する (アクション a)
私は現在、ビルド システムを make から Shake に移植するテストを行っており、障害にぶつかっています。
次のプロジェクト構造があるとします。
つまり、さまざまな入力拡張子が同一の出力拡張子にマップされるため、単純な"build//*.js" %>
ルールは機能しません。
可能な限り優先順位の使用を避けたかったので、可能な入力のいずれかの存在をチェックするアドホック ビルド ルールを作成するのは面倒だと感じたため (特に、この状況は他のファイル タイプでも発生するため)、次のように作成しました。
.coffee -> .js
そうすれば、各入力タイプ ( 、 ) などのマッピングを定義でき、.svg -> .png
それぞれの変換を実装するコードはほんのわずかです。そして、それはほとんど機能します。
しかし、私が知る限り、最初に値を捨てずにそこ(Action a)
から先に進むことは不可能に思えます。Rules _
Action
(Action a) -> (a -> Rules ()) -> Rules ()
タイプまたはの関数はあり(Action a) -> (Rules a)
ますか? どちらかを自分で実装できますか、それともライブラリのコードを変更する必要がありますか?
それとも、このアプローチ全体が頭がおかしいので、別のルートを取る必要がありますか?