private static MinificationResult MinifyJavaScript(Config config, string file) { string content = File.ReadAllText(file); var settings = JavaScriptOptions.GetSettings(config); if (config.Minify.ContainsKey("enabled") && config.Minify["enabled"].ToString().Equals("false", StringComparison.OrdinalIgnoreCase)) { return(null); } var minifier = new Minifier(); string minFile = GetMinFileName(file); string mapFile = minFile + ".map"; string result = minifier.MinifyJavaScript(content, settings); bool containsChanges = FileHelpers.HasFileContentChanged(minFile, result); if (!string.IsNullOrEmpty(result)) { OnBeforeWritingMinFile(file, minFile, containsChanges); if (containsChanges) { File.WriteAllText(minFile, result, new UTF8Encoding(true)); } OnAfterWritingMinFile(file, minFile, containsChanges); GzipFile(config, minFile, containsChanges); } return(new MinificationResult(result, null)); }
private static MinificationResult MinifyCss(Config config, string file) { string content = File.ReadAllText(file); var settings = CssOptions.GetSettings(config); if (config.Minify.ContainsKey("enabled") && config.Minify["enabled"].ToString().Equals("false", StringComparison.OrdinalIgnoreCase)) { return(null); } var minifier = new Minifier(); // Remove control characters which AjaxMin can't handle content = Regex.Replace(content, @"[\u0000-\u0009\u000B-\u000C\u000E-\u001F]", string.Empty); string result = minifier.MinifyStyleSheet(content, settings); string minFile = GetMinFileName(file); bool containsChanges = FileHelpers.HasFileContentChanged(minFile, result); OnBeforeWritingMinFile(file, minFile, containsChanges); if (containsChanges) { File.WriteAllText(minFile, result, new UTF8Encoding(true)); } OnAfterWritingMinFile(file, minFile, containsChanges); GzipFile(config, minFile, containsChanges); return(new MinificationResult(result, null)); }
private CompilerResult ProcessConfig(string baseFolder, Config config) { ICompiler compiler = CompilerService.GetCompiler(config); var result = compiler.Compile(config); if (result.Errors.Any(e => !e.IsWarning)) { return(result); } if (Path.GetExtension(config.OutputFile).Equals(".css", StringComparison.OrdinalIgnoreCase) && AdjustRelativePaths(config)) { result.CompiledContent = CssRelativePath.Adjust(result.CompiledContent, config); } config.Output = result.CompiledContent; FileInfo outputFile = config.GetAbsoluteOutputFile(); bool containsChanges = FileHelpers.HasFileContentChanged(outputFile.FullName, config.Output); OnBeforeProcess(config, baseFolder, containsChanges); if (containsChanges) { string dir = outputFile.DirectoryName; if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } File.WriteAllText(outputFile.FullName, config.Output, new UTF8Encoding(true)); } OnAfterProcess(config, baseFolder, containsChanges); //if (!config.Minify.ContainsKey("enabled") || config.Minify["enabled"].ToString().Equals("true", StringComparison.OrdinalIgnoreCase)) //{ FileMinifier.MinifyFile(config); //} if (!string.IsNullOrEmpty(result.SourceMap)) { string absolute = config.GetAbsoluteOutputFile().FullName; string mapFile = absolute + ".map"; bool smChanges = FileHelpers.HasFileContentChanged(mapFile, result.SourceMap); OnBeforeWritingSourceMap(absolute, mapFile, smChanges); if (smChanges) { File.WriteAllText(mapFile, result.SourceMap, new UTF8Encoding(true)); } OnAfterWritingSourceMap(absolute, mapFile, smChanges); } return(result); }