Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Manually bundle and minify JS from a controller action

I love Bundling and Minification in ASP.NET MVC 4.5 and use it a lot.

However, one small problem is that our "plugins" are hosted on a cookieless domain, which is in a separate project in my Visual Studio solution.

I'm looking for a solution that'll allow our main site to request a bundled and minified JS file containing any number of our plugins from the cookieless site. Something like:

http://my.cookieless.domain/plugins.js?include=alpha&include=bravo,charlie

So far, the best solution I can find is to use a 3rd party bundling and minification library, which seems like overkill considering ASP.NET has one built in.

Is it possible to manually call ASP.NETs bundling/minification process from a within controller action?

public JavaScriptResult Index(IList<string> include)
{
    //bundle and minify JS
}
like image 286
Connell Avatar asked Oct 09 '13 14:10

Connell


1 Answers

I came across this in search of something similar, here is the solution:

public ActionResult DynamicJs()
{
      // Obviously this will be dynamically generated
      string javaScript = new Minifier().MinifyJavaScript("alert('Hello world!');");

      //returns minified javaScript
      return JavaScript(javaScript);
}

Same goes for CSS. You might want to use:

 new Minifier().MinifyStyleSheet(styleSheet, new CssSettings { ColorNames = CssColor.Hex }

The Minifier class is a member of Microsoft.Ajax.Utilities, which you can get from the WebGrease Nuget package.

like image 124
Sir Crusher Avatar answered Oct 23 '22 08:10

Sir Crusher