TL;DR :IItemTransform
縮小されたファイルが元の (縮小されていない) ファイルと同じフォルダーに既に存在する場合、実行されません。
問題の説明
主にCSSの相対画像参照が原因で、この問題が発生しています。Javascript ファイルを使用IItemTransform
した場合も同様です。
これは私が使用しているものです:
- LESS ファイルをサポートするために、Visual Studio と Web Essentials アドインを使用しています。
- LESS ファイルを作成していて、Web Essentials アドインが保存時にファイルを自動的に縮小します
- プロジェクトでバンドルとミニフィケーションも使用しています
- CSS バンドルを作成するとき
CssRewriteUrlTransform
に、CSS URL を絶対 (背景画像など) にするために使用しているため、複数の CSS ファイルをまとめた後も画像が機能します。
これまでのところ異常はありませんが、機能しません。
問題に見えるのは?
バンドルと縮小が機能する方法は、過剰な処理を回避しようとすることです。これは、縮小されたファイルが元のファイルと同じフォルダーに存在する場合、独自の縮小を実行せず、既存のファイルを提供することを意味します。
これは、少なくとも既存の縮小されたファイルに対して変換を実行する限り、問題ありません。しかし、そうではありません。そのため、これらのリソースのほとんどすべてを壊すバンドル内の相対 URL になってしまいます。
回避策
- LESS ファイルでは常に絶対パスを指定します
- Web Essentials 設定で保存時のファイル縮小を無効にする
- バンドルを定義するときに縮小されたファイルを参照してください。これは、縮小されたバージョンがない( *.min.css には *.min.min.css がない) ためです。それ。
私の開発プロセスと使用したツール (およびその構成方法) の観点からすると、これはバグのように見えます。これらのファイルが同じ縮小プロセスの結果である場合、縮小が実行されるときに変換が実行されるため、これはまったくバグではありません。そのような機能が存在しないことは事実であり、機能させるにはアプリが書き込み権限を必要とするため、今後も存在しない可能性があります。結果:これはバグです。既存の縮小されたファイルは、キャッシュされる前に変換によって処理する必要があります。
質問
どういうわけか、バンドルと縮小を次のいずれかに納得させることは可能ですか?
- 既存の圧縮ファイル バージョンを使用しない
- 既存の縮小版に対して変換を実行する