6

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
}
MikeSmithDev
  • 15,731
  • 4
  • 58
  • 89
Connell
  • 13,925
  • 11
  • 59
  • 92

1 Answers1

5

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.

Sean Thorburn
  • 1,728
  • 17
  • 31
  • Thanks, but what about the bundle? What if I want to minify multiple file and bundle them into a single response? – Stephane May 10 '17 at 14:15
  • The you use the normal method. MVC Bundling and Minification. https://learn.microsoft.com/en-us/aspnet/mvc/overview/performance/bundling-and-minification – Sean Thorburn May 11 '17 at 16:41