I am using T4MVC and the Chirpy plugin in an ASP.Net MVC 3 website and I am loving both of them. Only T4MVC can't seem to handle the minified js files generated with Chirpy and .yui.js javascript files. Chirpy is generating .min.js files but the default T4MVC script expects .yui.min.js.
I have made the following adjustments to T4MVC to make it work In T4MVC.tt.settings.t4 I have added
const string ChirpyJSExtension = ".yui";
And in T4MVC.tt on line 983 I have changed the code in
if (!ExcludedStaticFileExtensions.Any(extension => projectItem.Name.EndsWith(extension, StringComparison.OrdinalIgnoreCase))) {
// if it's a non-minified javascript file
if (projectItem.Name.EndsWith(".js") && !projectItem.Name.EndsWith(".min.js")) {
if (AddTimestampToStaticLink(projectItem)) { #>
public static readonly string <#=Sanitize(projectItem.Name.Replace(ChirpyJSExtension,string.Empty))#> = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/<#=projectItem.Name.Replace(ChirpyJSExtension,string.Empty).Replace(".js", ".min.js")#>") ? Url("<#=projectItem.Name.Replace(ChirpyJSExtension,string.Empty).Replace(".js", ".min.js")#>")+"?"+T4Extensions.TimestampString(URLPATH + "/<#=projectItem.Name#>") : Url("<#=projectItem.Name#>")+"?"+T4Extensions.TimestampString(URLPATH + "/<#=projectItem.Name#>");
<#+} else {#>
public static readonly string <#=Sanitize(projectItem.Name.Replace(ChirpyJSExtension,string.Empty))#> = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/<#=projectItem.Name.Replace(ChirpyJSExtension,string.Empty).Replace(".js", ".min.js")#>") ? Url("<#=projectItem.Name.Replace(ChirpyJSExtension,string.Empty).Replace(".js", ".min.js")#>") : Url("<#=projectItem.Name#>");
<#+} #>
<#+}
// if it's a non-minified css file
else if (projectItem.Name.EndsWith(".css") && !projectItem.Name.EndsWith(".min.css")) {
if (AddTimestampToStaticLinks) { #>
public static readonly string <#=Sanitize(projectItem.Name)#> = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/<#=projectItem.Name.Replace(ChirpyJSExtension,string.Empty).Replace(".js", ".min.js")#>") ? Url("<#=projectItem.Name.Replace(ChirpyJSExtension,string.Empty).Replace(".css", ".min.css")#>")+"?"+T4Extensions.TimestampString(URLPATH + "/<#=projectItem.Name#>") : Url("<#=projectItem.Name#>")+"?"+T4Extensions.TimestampString(URLPATH + "/<#=projectItem.Name#>");
<#+} else {#>
public static readonly string <#=Sanitize(projectItem.Name)#> = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/<#=projectItem.Name.Replace(ChirpyJSExtension,string.Empty).Replace(".js", ".min.js")#>") ? Url("<#=projectItem.Name.Replace(ChirpyJSExtension,string.Empty).Replace(".css", ".min.css")#>") : Url("<#=projectItem.Name#>");
<#+} #>
<#+}
else if (AddTimestampToStaticLink(projectItem)) { #>
public static readonly string <#=Sanitize(projectItem.Name)#> = Url("<#=projectItem.Name#>")+"?"+T4Extensions.TimestampString(URLPATH + "/<#=projectItem.Name#>");
<#+}
else { #>
public static readonly string <#=Sanitize(projectItem.Name)#> = Url("<#=projectItem.Name#>");
<#+}
} #>
I hate editing included scripts like this but I saw no other solution.
So does anyone have a better solution for this that leaves the default T4MVC script alone?
New version of chirpy solve this problem. http://chirpy.codeplex.com/SourceControl/changeset/changes/ab7715fabba6