0

問題

SASS/SCSS には System.Web.Optimization バンドルと BundleTransformer を使用しています。各sassファイルの前に前処理を呼び出すことは可能ですか? バンドルに含まれるファイルの前だけでなく、@import を使用してインポートされるファイルの前にも。

バンドル内の各ファイルの前に前処理を行いたい場合は、カスタム IItemTransform または IBundleTransform を追加できますが、次のように想像してください。

Main.scss:
    @import '_mixin';
    some styles
_mixin.scss:
    some mixins

Main.scss はバンドルに含まれており、前処理されますが、_mixin.scss はバンドルに含まれていないため、scss コンパイラは前処理なしでディスクから raw ファイルを取得します。

コンパイルプロセスへのフックはありますか? それとも他の方法ですか?

なぜ私たちはこれが必要なのですか?

共通の静的ファイルは Core プロジェクトにあります。このコア プロジェクト スタティックは、IIS の仮想ディレクトリとして (デバッグで)、またはコピーされて (リリースで) 他のプロジェクトに含まれます。このソリューションでは、任意のプロジェクトで「/SharedStatic/..」を使用でき、デバッグでは仮想ディレクトリとして、リリースでは通常のパスとして常に解決されます。

したがって、コア プロジェクトへの正しい @import は次のようにする必要があります (BundleTransformer で動作します)。

@import '~/SharedStatic/Styles/_mixin.scss'

しかし、VS インテリセンス (または R# インテリセンス) と WebEssentials インテリセンスは、コンパイル時に'~'インポートを認識しません。Intellisense は次のことだけを理解します。

@import '../../../../CoreProject/Static/_mixin.scss'

したがって、'../../ ..'から'~/'へのインポートをバンドルして修正しながら、scss ファイルを前処理することをお勧めします。

4

1 に答える 1

0

まだ誰も答えていないので、SASS を構築するための簡単なフックはないようです。

この問題は別の方法で解決しました。IIS で仮想ディレクトリを使用するのをやめ、各プロジェクトに共有スタッフへのシンボリック リンクを含めました。これで、すべてのプロジェクトに独自の /SharedStatic があるように見えます (これは実際には Core Static へのシンボリック リンクです)。これにより、初期ファイルとコンパイル前のファイルの両方で '../../SharedStatic/' を使用できるため、SCSS の問題が解決されます。パスを別のパスに変更する必要はありません。

于 2015-04-23T09:25:46.840 に答える