private SPFile CreateOrUpdateMinifiedFile(SPItemEventProperties properties) { SPFile returnValue = null; RunForMainFile(properties, (fileNameParser, targetFolder, mainFile, minifiedFile) => { var reader = new FileContentParser(mainFile); var content = reader.GetCompiledContent(); var minifier = new FileMinifier(fileNameParser.FileExtension, content); if (minifiedFile != null) { if (minifiedFile.CheckedOutByUser == null) { minifiedFile.CheckOut(); } minifiedFile.SaveBinary(minifier.MinifyAsByteArray()); } else { var fileHashDictionary = new FileHashDictionary(properties.ListItem.Web.Site); var fileHash = fileHashDictionary[fileNameParser.FilePath]; var minifiedFileName = fileNameParser.GenerateMinifiedVersionFileName(fileHash); string fileUrl = String.Format("{0}/{1}", targetFolder.Url, minifiedFileName); minifiedFile = targetFolder.Files.Add(fileUrl, minifier.MinifyAsByteArray()); } returnValue = minifiedFile; }); return(returnValue); }
public static void MinifyFile(string fileName) { ThreadPool.QueueUserWorkItem((o) => { try { string ext = Path.GetExtension(fileName); string minFile; bool minFileExist = FileHelpers.HasMinFile(fileName, out minFile); string mapFile; bool mapFileExist = FileHelpers.HasSourceMap(minFile, out mapFile); bool gzipFileExist = File.Exists(minFile + ".gz"); bool produceSourceMap = (minFileExist && mapFileExist) || (!minFileExist && !mapFileExist); bool produceGzipFile = (minFileExist && gzipFileExist) || (!minFileExist && !gzipFileExist); MinificationResult result = FileMinifier.MinifyFile(fileName, produceGzipFile, produceSourceMap); if (result == null) { return; } ErrorListService.ProcessCompilerResults(result); if (!result.HasErrors && produceSourceMap && !string.IsNullOrEmpty(result.SourceMap)) { mapFile = minFile + ".map"; ProjectHelpers.CheckFileOutOfSourceControl(mapFile); File.WriteAllText(mapFile, result.SourceMap, new UTF8Encoding(true)); if (!mapFileExist) { ProjectHelpers.AddNestedFile(minFile, mapFile); } } } catch (Exception ex) { Logger.Log(ex); } }); }
public static bool HasMinFile(string file, out string minFile) { minFile = FileMinifier.GetMinFileName(file); return(File.Exists(minFile)); }
private SPFile CreateOrUpdateMinifiedFile(SPItemEventProperties properties) { SPFile returnValue = null; RunForMainFile(properties, (fileNameParser, targetFolder, mainFile, minifiedFile) => { var reader = new FileContentParser(mainFile); var content = reader.GetCompiledContent(); var minifier = new FileMinifier(fileNameParser.FileExtension, content); if (minifiedFile != null) { if (minifiedFile.CheckedOutByUser == null) minifiedFile.CheckOut(); minifiedFile.SaveBinary(minifier.MinifyAsByteArray()); } else { var fileHashDictionary = new FileHashDictionary(properties.ListItem.Web.Site); var fileHash = fileHashDictionary[fileNameParser.FilePath]; var minifiedFileName = fileNameParser.GenerateMinifiedVersionFileName(fileHash); string fileUrl = String.Format("{0}/{1}", targetFolder.Url, minifiedFileName); minifiedFile = targetFolder.Files.Add(fileUrl, minifier.MinifyAsByteArray()); } returnValue = minifiedFile; }); return returnValue; }