void AppendCacheBusters(List <string> list) { for (var i = 0; i < list.Count; i++) { list[i] += "?cb=" + DextopFileUtil.CalculateCacheBuster(package.Module.MapPath(list[i])); } }
void OptimizeFileList(DextopResourceOptimizationContext context, List <string> files) { if (External) { return; } for (var i = 0; i < files.Count; i++) { var filePath = package.Module.MapPath(files[i]); DateTime lastWrite; var cb = DextopFileUtil.CalculateCacheBuster(new[] { filePath }, out lastWrite); if (Minify) { files[i] = files[i].Substring(0, files[i].Length - 4) + "-min.css"; var outputPath = new FileInfo(filePath.Substring(0, filePath.Length - 4) + "-min.css"); if (!context.FakeOptimization && (!SmartOverwrite || !outputPath.Exists || outputPath.LastAccessTime <= lastWrite)) { var css = File.ReadAllText(filePath); css = DextopFileUtil.MinifyCss(css); File.WriteAllText(outputPath.FullName, css); } } files[i] = files[i] + "?cb=" + cb; } }
/// <summary> /// Optimizes the JS files inside the package. /// </summary> /// <param name="context">The context.</param> public void Optimize(DextopResourceOptimizationContext context) { if (!Concate) { AppendCacheBusters(package.Files); if (package.Localizations != null) { foreach (var pl in package.Localizations) { AppendCacheBusters(pl.Value); } } return; } var pkg = new DextopResourcePackage(context.OptimizationOutputModule); var fileName = package.Module.ModuleName + "-" + PackageName + ".js"; var filePaths = package.Files.Select(a => package.Module.MapPath(a)).ToArray(); DateTime lastWrite; int cacheBuster = DextopFileUtil.CalculateCacheBuster(filePaths, out lastWrite); var outputFile = new FileInfo(context.OptimizationOutputModule.MapPath(fileName)); if (!SmartOverwrite || !outputFile.Exists || outputFile.LastWriteTime <= lastWrite) { var js = DextopFileUtil.ConcateFiles(filePaths); if (Minify) { js = DextopFileUtil.MinifyJs(js, Obfuscate); } DextopFileUtil.WriteTextFile(outputFile.FullName, js); } pkg.AddFiles(new[] { fileName + "?cb=" + cacheBuster }); if (package.Localizations != null) { foreach (var loc in package.Localizations) { fileName = package.Module.ModuleName + "-" + PackageName + String.Format(".locale-{0}.js", loc.Key); filePaths = loc.Value.Select(a => package.Module.MapPath(a)).ToArray(); cacheBuster = DextopFileUtil.CalculateCacheBuster(filePaths, out lastWrite); outputFile = new FileInfo(context.OptimizationOutputModule.MapPath(fileName)); if (!SmartOverwrite || !outputFile.Exists || outputFile.LastWriteTime <= lastWrite) { var js = DextopFileUtil.ConcateFiles(filePaths); js = DextopFileUtil.ConcateFiles(filePaths); if (Minify) { js = DextopFileUtil.MinifyJs(js, Obfuscate); } DextopFileUtil.WriteTextFile(outputFile.FullName, js); } pkg.AddLocalization(loc.Key, new[] { fileName + "?cb=" + cacheBuster }); } } package = pkg; }