tôi đã được cải thiện các gợi ý tốt bởi Jon Malcolm (và một số cập nhật bởi Satpal here) để sửa chữa vài hạn chế mà nó có:
1) Nó phá vỡ các hành vi mặc định của các bó với" .min . " file
2) Nó không cho phép các mẫu tìm kiếm, nhưng chỉ file được loại trừ
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Optimization;
public static class BundleExtentions
{
public static Bundle IncludeDirectoryWithExclusion(this Bundle bundle, string directoryVirtualPath, string searchPattern, bool includeSubDirectories, params string[] excludePatterns)
{
string folderPath = HttpContext.Current.Server.MapPath(directoryVirtualPath);
SearchOption searchOption = includeSubDirectories
? SearchOption.AllDirectories
: SearchOption.TopDirectoryOnly;
HashSet<string> excludedFiles = GetFilesToExclude(folderPath, searchOption, excludePatterns);
IEnumerable<string> resultFiles = Directory.GetFiles(folderPath, searchPattern, searchOption)
.Where(file => !excludedFiles.Contains(file) && !file.Contains(".min."));
foreach (string resultFile in resultFiles)
{
bundle.Include(directoryVirtualPath + resultFile.Replace(folderPath, "")
.Replace("\\", "/"));
}
return bundle;
}
private static HashSet<string> GetFilesToExclude(string path, SearchOption searchOptions, params string[] excludePatterns)
{
var result = new HashSet<string>();
foreach (string pattern in excludePatterns)
{
result.UnionWith(Directory.GetFiles(path, pattern, searchOptions));
}
return result;
}
}
Một cách sử dụng ví dụ mà tôi có là bao gồm tất cả các thư viện từ thư mục lib bắt đầu với góc cạnh, nhưng không bao gồm tất cả các kịch bản locale (vì chỉ có một sẽ được bổ sung dựa trên ngôn ngữ trong một gói riêng biệt sau):
bundles.Add(new Bundle("~/bundles/scripts")
.Include("~/wwwroot/lib/angular/angular.js") // Has to be first
.IncludeDirectoryWithExclusion("~/wwwroot/lib", "*.js", true, "*.locale.*.js"));
này sẽ cư xử đúng nếu bạn có cả angular.min.js và angular.js và thêm phiên bản unminified trong gỡ lỗi và sử dụng tệp .min.js hiện có trong r elease.
Nguồn
2016-03-18 09:26:46
Tại sao bạn không chuyển tệp css ra khỏi thư mục đó? –
cũng tất nhiên tôi có thể làm như vậy và chỉ định một gói cho tệp này, nhưng tốt hơn là nên có tất cả các tệp trong một thư mục và nếu tôi không cần nó, tôi sẽ loại trừ nó khỏi gói – xurca
Bạn có rất nhiều tệp? Bạn có thể đăng ký từng css riêng lẻ nếu bạn có một số lượng nhỏ các tệp. –