9

重複したトピックを作成していないことを願っていますが、2 日間検索しましたが、これに対する解決策が見つかりません。

MVC4で新しいプロジェクトを開始しており、より少ないバージョンのブートストラップがロードされています。私が直面している問題は、bootstrap.less、 my global.less、または現在のファイルの外部にあるクラスまたは変数を参照しようとしたときです。現在のファイルの先頭に変数を作成して問題なく使用できますが、別のファイルから何かを使用したい場合は、それを使用する必要があります@import。私のアプリ全体が1つのファイルにある場合、これは問題ありませんが、作成した各ページ/セクションレスファイルに4つ以上のファイルを@importする必要があります。

https://gist.github.com/2002958から MVC4 バンドルの追加を追加しました

問題は、私が見ているように、各ファイルが個別に評価され、css に変換されることです。プロセスを簡素化し、less バンドル内のすべてのファイルから大量の less 文字列を作成してから変換しようとしましたが ( Less.Parse(lessString))、エラーが発生しました:

「見つからない .less で終わるファイルをインポートしています」

だからここに私の究極の質問があります:物理ファイルを参照せずに、より少ない文字列を単純に解析する方法はありますか? それは私の問題を解決するでしょう。

奇妙な理由でそれが不可能な場合、ファイルを縮小する前に実際にファイルをバンドルすることを知らないコンポーネントまたはプロセスが既に配置されていますか?

私はこれを機能させようとしてぐるぐる回っているので、この主題に関する光は高く評価されます。

この質問は Dotless グループにも投稿されました:
https://groups.google.com/forum/?fromgroups#!topic/dotless/j-8OP1dNjUY

4

2 に答える 2

3

このソリューションは私のために働いています:

2 つの NuGet パッケージがあります:
- dotless
-dotless adapter for system.web.optimization

web.configの には、次の行があります。

<configuration>
    <configSections>
        <section name="dotless" 
                 type="dotless.Core.configuration.DotlessConfigurationSectionHandler, dotless.Core" />
    </configSections>
    <system.web>
        <httpHandlers>
            <add path="*.less"
                 verb="GET"
                 type="dotless.Core.LessCssHttpHandler, dotless.Core" />
        </httpHandlers>
    </system.web>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <handlers>
            <add name="dotless" 
                 path="*.less" 
                 verb="GET" 
                 type="dotless.Core.LessCssHttpHandler,dotless.Core" 
                 resourceType="File" 
                 preCondition="" />
        </handlers>
    </system.webServer>
    <dotless minifyCss="true" cache="true" web="false" disableParameters="true" />
</configuration>

必要に応じて、ドットなしのパラメーターを定義する必要があることに注意してください。

BundleConfig.cs

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new LessBundle("~/bundles/styles/").Include("~/Content/site.less"));
    BundleTable.EnableOptimizations = true; // false if you want to debug css
}

そして最後に、Site.less:

/* I have to redefine some bootstrap mixins and variables,
   so importing bootstrap and extending happens here: */
@import "bootstrap-extends.less";

/* all other needed less should be included here too, for example:
   @import "admin.less";
   @import "controls.less";
   etc
*/

body {

}

site.lessbootstrap-extends.lessContent フォルダ内にあります 。bootstrap-extendsには、必要な@importディレクティブがすべて含まれています。これらは通常、 にリストされてい~/Content/bootstrap/bootstrap.lessます。

于 2015-06-26T07:36:17.473 に答える
1

LESS バンドル トランスフォーマーを調べましたか?

于 2013-12-11T22:46:19.050 に答える