প্রতি বান্ডিল ভিত্তিতে মিনিফিকেশন কীভাবে অক্ষম করবেন তা এখানে:
bundles.Add(new StyleBundleRaw("~/Content/foobarcss").Include("/some/path/foobar.css"));
bundles.Add(new ScriptBundleRaw("~/Bundles/foobarjs").Include("/some/path/foobar.js"));
সিডিনোট: আপনার বান্ডিলগুলির জন্য ব্যবহৃত পাথগুলি আপনার প্রকাশিত বিল্ডগুলির কোনও প্রকৃত পাথের সাথে মিলিত হওয়া উচিত নয় অন্যথায় কিছুই কাজ করবে না। .Js, .css এবং / অথবা 'ব্যবহার এড়াতে ভুলবেন না। এবং বান্ডেলের নামে যে কোনও জায়গায় '_'। উপরের উদাহরণের মতো নামটি যতটা সম্ভব সহজ এবং সহজবোধ্য রাখুন।
সাহায্যকারী ক্লাসগুলি নীচে দেখানো হয়েছে। লক্ষ্য করুন যে এই ক্লাসগুলিকে ভবিষ্যত-প্রমাণ করার জন্য আমরা জেরিয়াস / সিএসএস মিনিফাইং ইনস্ট্যান্সগুলি .Carar () ব্যবহারের পরিবর্তে অপসারণ করি এবং আমরা একটি মাইম-টাইপ-সেটার রূপান্তরও সন্নিবেশ করি যা প্রযোজনা বিল্ডগুলি সমস্যায় পড়তে বাধ্য হয় বিশেষত যখন এটি সিএসএস-বান্ডিলগুলি সঠিকভাবে হস্তান্তর করতে আসে (ফায়ারফক্স এবং ক্রোম মাইম-টাইপ সহ সিএসএস বান্ডিলগুলি "টেক্সট / এইচটিএমএল" সেট করে যা ডিফল্ট হয়):
internal sealed class StyleBundleRaw : StyleBundle
{
private static readonly BundleMimeType CssContentMimeType = new BundleMimeType("text/css");
public StyleBundleRaw(string virtualPath) : this(virtualPath, cdnPath: null)
{
}
public StyleBundleRaw(string virtualPath, string cdnPath) : base(virtualPath, cdnPath)
{
Transforms.Add(CssContentMimeType); //0 vital
Transforms.Remove(Transforms.FirstOrDefault(x => x is CssMinify)); //0
}
//0 the guys at redmond in their infinite wisdom plugged the mimetype "text/css" right into cssminify upon unwiring the minifier we
// need to somehow reenable the cssbundle to specify its mimetype otherwise it will advertise itself as html and wont load
}
internal sealed class ScriptBundleRaw : ScriptBundle
{
private static readonly BundleMimeType JsContentMimeType = new BundleMimeType("text/javascript");
public ScriptBundleRaw(string virtualPath) : this(virtualPath, cdnPath: null)
{
}
public ScriptBundleRaw(string virtualPath, string cdnPath) : base(virtualPath, cdnPath)
{
Transforms.Add(JsContentMimeType); //0 vital
Transforms.Remove(Transforms.FirstOrDefault(x => x is JsMinify)); //0
}
//0 the guys at redmond in their infinite wisdom plugged the mimetype "text/javascript" right into jsminify upon unwiring the minifier we need
// to somehow reenable the jsbundle to specify its mimetype otherwise it will advertise itself as html causing it to be become unloadable by the browsers in published production builds
}
internal sealed class BundleMimeType : IBundleTransform
{
private readonly string _mimeType;
public BundleMimeType(string mimeType) { _mimeType = mimeType; }
public void Process(BundleContext context, BundleResponse response)
{
if (context == null)
throw new ArgumentNullException(nameof(context));
if (response == null)
throw new ArgumentNullException(nameof(response));
response.ContentType = _mimeType;
}
}
এই পুরো জিনিসটি কাজ করতে আপনাকে ইনস্টল করতে হবে (নুগেটের মাধ্যমে):
ওয়েবগ্রিজ 1.6.0+ মাইক্রোসফ্ট.অস্পনেট.ওয়েব.অ্যাপটিমাইজেশন 1.1.3+
এবং আপনার ওয়েবকনফিগটিও এর মতো সমৃদ্ধ করা উচিত:
<runtime>
[...]
<dependentAssembly>
<assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-x.y.z.t" newVersion="x.y.z.t" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-x.y.z.t" newVersion="x.y.z.t" />
</dependentAssembly>
[...]
</runtime>
<!-- setting mimetypes like we do right below is absolutely vital for published builds because for some reason the -->
<!-- iis servers in production environments somehow dont know how to handle otf eot and other font related files -->
</system.webServer>
[...]
<staticContent>
<!-- in case iis already has these mime types -->
<remove fileExtension=".otf" />
<remove fileExtension=".eot" />
<remove fileExtension=".ttf" />
<remove fileExtension=".woff" />
<remove fileExtension=".woff2" />
<mimeMap fileExtension=".otf" mimeType="font/otf" />
<mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
<mimeMap fileExtension=".ttf" mimeType="application/octet-stream" />
<mimeMap fileExtension=".woff" mimeType="application/font-woff" />
<mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
</staticContent>
<!-- also vital otherwise published builds wont work https://stackoverflow.com/a/13597128/863651 -->
<modules runAllManagedModulesForAllRequests="true">
<remove name="BundleModule" />
<add name="BundleModule" type="System.Web.Optimization.BundleModule" />
</modules>
[...]
</system.webServer>
নোট করুন যে আপনার সিএসএস-বান্ডিলগুলি ফন্ট ইত্যাদির ক্ষেত্রে কাজ করতে আপনাকে অতিরিক্ত পদক্ষেপ নিতে হতে পারে তবে এটি অন্যরকম একটি গল্প।