在最新版本的Servicestack中,引入了minifier。所以,在项目中尝试过它们。我能够缩小剃刀页面,但不能缩小我添加到其中的javascript或css文件。
我已复制粘贴代码
public override List<IVirtualPathProvider> GetVirtualPathProviders()
{
var existingProviders = base.GetVirtualPathProviders();
var memFs = new InMemoryVirtualPathProvider(this);
//Get existing Local FileSystem Provider
var fs = existingProviders.First(x => x is FileSystemVirtualPathProvider);
//Process all .html files:
foreach (var file in fs.GetAllMatchingFiles("*.html"))
{
var contents = Minifiers.HtmlAdvanced.Compress(file.ReadAllText());
memFs.AddFile(file.VirtualPath, contents);
}
//Process all .css files:
foreach (var file in fs.GetAllMatchingFiles("*.css")
.Where(file => !file.VirtualPath.EndsWith(".min.css"))) //ignore pre-minified .css
{
var contents = Minifiers.Css.Compress(file.ReadAllText());
memFs.AddFile(file.VirtualPath, contents);
}
//Process all .js files
foreach (var file in fs.GetAllMatchingFiles("*.js")
.Where(file => !file.VirtualPath.EndsWith(".min.js"))) //ignore pre-minified .js
{
try
{
var js = file.ReadAllText();
var contents = Minifiers.JavaScript.Compress(js);
memFs.AddFile(file.VirtualPath, contents);
}
catch (Exception ex)
{
//As JSMin is a strict subset of JavaScript, this can fail on valid JS.
//We can report exceptions in StartUpErrors so they're visible in ?debug=requestinfo
base.OnStartupException(new Exception("JSMin Error {0}: {1}".Fmt(file.VirtualPath, ex.Message)));
}
}
//Give new Memory FS the highest priority
existingProviders.Insert(0, memFs);
return existingProviders;
}
在调试时我发现了这一点。它确实缩小了文件的数量,但有些文件是如何在外面放置的。
我也尝试过调试和发布,甚至部署版本。但是我在那里添加的JavaScript和CSS作为参考仍然只是在beutified格式。
我做错了吗?