28

TL;DR :IItemTransform縮小されたファイルが元の (縮小されていない) ファイルと同じフォルダーに既に存在する場合、実行されません。

問題の説明

主にCSSの相対画像参照が原因で、この問題が発生しています。Javascript ファイルを使用IItemTransformした場合も同様です。

これは私が使用しているものです:

  1. LESS ファイルをサポートするために、Visual Studio と Web Essentials アドインを使用しています。
  2. LESS ファイルを作成していて、Web Essentials アドインが保存時にファイルを自動的に縮小します
  3. プロジェクトでバンドルとミニフィケーションも使用しています
  4. CSS バンドルを作成するときCssRewriteUrlTransformに、CSS URL を絶対 (背景画像など) にするために使用しているため、複数の CSS ファイルをまとめた後も画像が機能します。

これまでのところ異常はありませんが、機能しません。

問題に見えるのは?

バンドルと縮小が機能する方法は、過剰な処理を回避しようとすることです。これは、縮小されたファイルが元のファイルと同じフォルダーに存在する場合、独自の縮小を実行せず、既存のファイルを提供することを意味します。

これは、少なくとも既存の縮小されたファイルに対して変換を実行する限り、問題ありません。しかし、そうではありません。そのため、これらのリソースのほとんどすべてを壊すバンドル内の相対 URL になってしまいます。

回避策

  1. LESS ファイルでは常に絶対パスを指定します
  2. Web Essentials 設定で保存時のファイル縮小を無効にする
  3. バンドルを定義するときに縮小されたファイルを参照してください。これは、縮小されたバージョンがない( *.min.css には *.min.min.css がない) ためです。それ。

私の開発プロセスと使用したツール (およびその構成方法) の観点からすると、これはバグのように見えます。これらのファイルが同じ縮小プロセスの結果である場合、縮小が実行されるときに変換が実行されるため、これはまったくバグではありません。そのような機能が存在しないことは事実であり、機能させるにはアプリが書き込み権限を必要とするため、今後も存在しない可能性があります。結果:これはバグです。既存の縮小されたファイルは、キャッシュされる前に変換によって処理する必要があります。

質問

どういうわけか、バンドルと縮小を次のいずれかに納得させることは可能ですか?

  1. 既存の圧縮ファイル バージョンを使用しない
  2. 既存の縮小版に対して変換を実行する
4

2 に答える 2

1

Grunt の使用を検討しましたか? http://gruntjs.com/

習得には時間がかかりますが、情報プールは膨大です。Web Essentials で発生している問題は、grunt では問題になりません。

私は現在、VSでそれを使用して、cssとjavascriptの両方を縮小、バンドル、トランスパイルし、ファイルを展開ディレクトリに再編成しています。ディレクトリ構造を設定すると、grunt ファイルは非常に簡単に再利用できます。

VS のアドオン (以下のリンク) を使用すると、grunt ファイルを右クリックして、ポップアップ メニューから実行する grunt タスクを選択できます。

https://visualstudiogallery.msdn.microsoft.com/dcbc5325-79ef-4b72-960e-0a51ee33a0ff

Grunt の「タスク」と呼ばれるものは、さまざまなプラグイン ( https://www.npmjs.com/package/grunt-contrib-less ) をダウンロードすることで作成できます。

于 2015-03-19T21:07:55.683 に答える
0

私は LESS や Web Essentials を使用したことがないので、この投稿の価値を理解してください (大したことではありません)。ビルド前のコマンドを追加して、古いファイルを単純に削除し、CSS を更新する必要があるときに再ビルドを実行してください。 .

于 2014-12-18T17:04:22.607 に答える