1. ホーム
  2. c#

[解決済み】Bundlerに.minファイルが含まれない。

2022-04-06 11:15:40

質問

mvc4 bundler が拡張子 .min.js を持つファイルを含まないという奇妙な問題があるのですが。

BundleConfigクラスで、私は次のように宣言しています。

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new ScriptBundle("~/Scripts/jquery")
        .Include("~/Scripts/jquery-1.8.0.js")
        .Include("~/Scripts/jquery.tmpl.min.js"));            
}

私の見解では、次のように宣言します。

<html>
    <head>
    @Scripts.Render("~/Scripts/jquery")
    </head><body>test</body>
</html>

そして、レンダリングするときは、レンダリングするだけです。

<html>
    <head>
         <script src="/Scripts/jquery-1.8.0.js"></script>
    </head>
    <body>test</body>
</html>

jquery.tmpl.min.js を jquery.tmpl.js にリネームすると(それに応じてバンドル内のパスを更新すると)、両方のスクリプトが正しくレンダリングされるようになります。

.min.js'ファイルを無視するような設定になっているのでしょうか?

解決方法は?

私が最初に投稿した解決策は疑問です(汚いハックです)。多くのコメントで指摘されているように、Microsoft.AspNet.Web.Optimizationパッケージでツイキャスの動作が変更され、ツイキャスが機能しなくなったのです。今現在、パッケージのバージョン1.1.3では全く問題を再現することができません。

System.Web.Optimization.BundleCollectionのソースをご覧ください。 ドットピーク のように)、これからやろうとしていることをよりよく理解することができます。 また マックス・シュメレフの回答 .

オリジナルの回答 :

.min.jsを.jsにリネームするか、以下のようにします。

    public static void AddDefaultIgnorePatterns(IgnoreList ignoreList)
    {
        if (ignoreList == null)
            throw new ArgumentNullException("ignoreList");
        ignoreList.Ignore("*.intellisense.js");
        ignoreList.Ignore("*-vsdoc.js");
        ignoreList.Ignore("*.debug.js", OptimizationMode.WhenEnabled);
        //ignoreList.Ignore("*.min.js", OptimizationMode.WhenDisabled);
        ignoreList.Ignore("*.min.css", OptimizationMode.WhenDisabled);
    }

    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.IgnoreList.Clear();
        AddDefaultIgnorePatterns(bundles.IgnoreList);
        //NOTE: it's bundles.DirectoryFilter in Microsoft.AspNet.Web.Optimization.1.1.3 and not bundles.IgnoreList

        //...your code
     }