2017-06-26 6 views
3

J'ai plusieurs Bundles Virtual Paths définis sur le BundleConfig.config où chacun a associé plusieurs fichiers de chemin javascript.Combinaisons différentes Bundles Chemin virtuel en un seul

Ce que je veux est de rejoindre tous ces chemins virtuels en un seul.

Par exemple, j'ai le code suivant:

bundles.Add(new ScriptBundle(BundlesVirtualPaths.EditorV2.Main).Include(
           "~/Scripts/EditorV2/main.js" 
        )); 

bundles.Add(new ScriptBundle(BundlesVirtualPaths.EditorV2.Main2).Include(
           "~/Scripts/EditorV2/main2.js" 
        )); 

bundles.Add(new ScriptBundle(BundlesVirtualPaths.EditorV2.Main3).Include(
           "~/Scripts/EditorV2/main3.js" 
        )); 

Et ce que je veux est un loin de faire quelque chose comme ceci:

bundles.Add(new ScriptBundle(BundlesVirtualPaths.EditorV2.AllScripts).Include(
          BundlesVirtualPaths.EditorV2.Main, 
          BundlesVirtualPaths.EditorV2.Main2, 
          BundlesVirtualPaths.EditorV2.Main3 
       )); 

Cela peut être fait? Je peux le faire?

Répondre

4

Vous pouvez essayer quelque chose comme ceci:

public static class BundleHelpers 
{ 
    public static BundleCollection JoinScriptBundle(this BundleCollection bundleCollection, string virtualPath, params string[] bundlesToJoin) 
    { 
     var bundleResolver = new BundleResolver(bundleCollection); 
     Bundle allScriptBundle = new ScriptBundle(virtualPath); 
     foreach (var bundle in bundlesToJoin) 
     { 
      foreach (var scriptPath in bundleResolver.GetBundleContents(bundle)) 
      { 
       allScriptBundle = allScriptBundle.Include(scriptPath); 
      } 
     } 
     bundleCollection.Add(allScriptBundle); 
     return bundleCollection; 
    } 
} 

Ensuite, vous pouvez joindre vos paquets:

bundles.JoinScriptBundle("~/bundle/allscript", "~/bundles/jquery", "~/bundles/jqueryval", "~/bundles/modernizr"); 
1

Oui, vous pouvez le faire, parce que vous essayez de combiner tous les JS fichiers un seul bundle qui est le bon moyen, mais il peut ne pas se produire le même cas à chaque fois. de sorte que vous devez faire regrouper en fonction du type comme suit

Pour les répertoires:

bundles.Add(new Bundle("~/js/vendor").IncludeDirectory(@"~/Scripts/vendors/JQuery", "*.js") 
                .IncludeDirectory(@"~/Scripts/vendors/Knockout", "*.js") 
                .IncludeDirectory(@"~/Scripts/vendors", "*.js")); 

Pour les fichiers:

bundles.Add(new Bundle("~/js/kendo").Include("~/Scripts/kendo/kendo.core.min.js") 
             .Include("~/Scripts/kendo/kendo.data.min.js") 
             .Include("~/Scripts/kendo/kendo.binder.min.js") 
             .Include("~/Scripts/kendo/kendo.calendar.min.js") 

Pour url:

var CdnPath = "http://fonts.googleapis.com/css?family=Open+Sans:300"; 
bundles.Add(new ScriptBundle("mybarbundle", CdnPath).Include("~/Scripts/jquery-{version}.js")); 
+0

Vous n'avez pas compris ma question. Ce que je veux, étant donné plusieurs chemins virtuels (chacun avec plusieurs chemins de scripts asssociés), je veux les associer et tous les fichiers à un seul nouveau chemin virtuel afin de gagner du temps en joignant tous les chemins de scripts dans un nouveau chemin virtuel –