問題タブ [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.

0 投票する
1 に答える
119 参照

shake-build-system - アクションからシェイク ルールを生成する

プロジェクト内のすべての「Makefile」を検索し、それらに基づいてルールを生成したいと考えています。ただし、(意図的に) Action から逃れることはできないように見えます。そのため、代わりに「Makefile」スキャナーをシェイク機能の前の IO 操作に持ち上げました。

より良い方法はありますか?

0 投票する
1 に答える
145 参照

shake-build-system - Shake ファイル パターンで環境変数を補間するにはどうすればよいですか?

私の Makefile では、出力ディレクトリをハードコーディングするよりも環境変数で定義することを好みます (設定されていない場合は、妥当なデフォルト値を使用します)。たとえば、Make ルールは次のようになります。

Shake で同様の目標を達成する方法はまだわかりません。環境変数の値または適切なデフォルト値を取得するために を使用するのが好きgetEnvWithDefaultですが、バインドやラムダでそれをバッシングしても、(*>).

で使用するために FilePattern で環境変数を補間するにはどうすればよいでしょ(*>)うか?

0 投票する
1 に答える
80 参照

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、もはや存在しないようです。

0 投票する
1 に答える
100 参照

shake-build-system - 生成されたファイルに応じて

need生成されたファイルに対するルールの正しい方法は何ですか? これが私が試したことです:

generatedただし、これにより、再実行されないというルールが発生するため、実行a.outを繰り返しても同じままです。

0 投票する
1 に答える
146 参照

haskell - 入力の変更に依存する Shake ルールを定義する方法

exeShake を使用して、一連の実行可能ファイル ( 、dllなど)に依存するルールを定義したいと考えています。ただし、それらを使用する前に、デジタル署名する必要があります。「署名」は実際には新しいファイルを生成しないため、署名された後のファイルのみにルールが依存するようにするにはどうすればよいですか?

編集:曖昧さ回避は順調です。私のルールはこれらのファイルの一部を生成しますが、すべてではありません。一部はサードパーティであり、リポジトリの一部です。したがって、どういうわけか、署名された後、これらの静的ファイルに依存する必要があります。

0 投票する
1 に答える
239 参照

haskell - シェイクを使用して、ビルド時に不明な一連のファイルのルールを定義します

Shake を使用して複雑なビルド スクリプトを開発していますが、(今のところ) Visual Studio ソリューションを使用してすべてのバイナリをビルドしています。このため、1 回のスイープで数十のファイルを作成するルールを定義する必要があります。ビルドが完了するまで、ビルドの出力がどうなるかわかりません。

たとえば、次のようなルールを書きたいとします。

しかし、現状では、どのように構築するかを正式に定義するルールがないため、のルールは*.test-resultsどのように構築するかを知りません。testExeどうすればこれを回避できますか?

0 投票する
1 に答える
36 参照

haskell - 構築不可能な目標を削除するには?

ソースがなくなったがクリーニングせずにファイルを削除したいと思います。

インクリメンタル ビルドの部分的なクリーニングはサポートされていますか? この場合、以前のビルドで使用された一連のソース ファイルと比較し、なくなったファイルをクリーンアップする方法を定義できると思います。

0 投票する
1 に答える
177 参照

haskell - an の内容から規則を動的に生成する (アクション a)

私は現在、ビルド システムを make から Shake に移植するテストを行っており、障害にぶつかっています。

次のプロジェクト構造があるとします。

つまり、さまざまな入力拡張子が同一の出力拡張子にマップされるため、単純な"build//*.js" %>ルールは機能しません。

可能な限り優先順位の使用を避けたかったので、可能な入力のいずれかの存在をチェックするアドホック ビルド ルールを作成するのは面倒だと感じたため (特に、この状況は他のファイル タイプでも発生するため)、次のように作成しました。

.coffee -> .jsそうすれば、各入力タイプ ( 、 ) などのマッピングを定義でき、.svg -> .pngそれぞれの変換を実装するコードはほんのわずかです。そして、それはほとんど機能します。

しかし、私が知る限り、最初に値を捨てずにそこ(Action a)から先に進むことは不可能に思えます。Rules _Action

(Action a) -> (a -> Rules ()) -> Rules ()タイプまたはの関数はあり(Action a) -> (Rules a)ますか? どちらかを自分で実装できますか、それともライブラリのコードを変更する必要がありますか?

それとも、このアプローチ全体が頭がおかしいので、別のルートを取る必要がありますか?