Files
Umbraco-CMS/src/Umbraco.Web/Mvc/MinifyJavaScriptResultAttribute.cs

52 lines
1.5 KiB
C#
Raw Normal View History

using System.Web.Mvc;
using System.Web.UI;
using ClientDependency.Core;
using ClientDependency.Core.CompositeFiles;
using Umbraco.Composing;
using Umbraco.Core.Hosting;
namespace Umbraco.Web.Mvc
{
/// <summary>
/// Minifies the result for the JavaScriptResult
/// </summary>
/// <remarks>
/// Only minifies in release mode
/// </remarks>
public class MinifyJavaScriptResultAttribute : ActionFilterAttribute
{
private readonly IHostingEnvironment _hostingEnvironment;
public MinifyJavaScriptResultAttribute()
{
_hostingEnvironment = Current.HostingEnvironment;
}
public MinifyJavaScriptResultAttribute(IHostingEnvironment hostingEnvironment)
{
_hostingEnvironment = hostingEnvironment;
}
/// <summary>
/// Minify the result if in release mode
/// </summary>
/// <param name="filterContext"></param>
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
base.OnResultExecuting(filterContext);
if (filterContext.Result == null) return;
var jsResult = filterContext.Result as JavaScriptResult;
if (jsResult == null) return;
if (_hostingEnvironment.IsDebugMode) return;
2017-07-20 11:21:28 +02:00
//minify the result
var result = jsResult.Script;
var minifier = new JSMin();
2017-07-20 11:21:28 +02:00
var minified = minifier.Minify(result);
jsResult.Script = minified;
}
}
2017-07-20 11:21:28 +02:00
}