public override bool Execute() { CssPackagerOptions cssPackagerOptions = new CssPackagerOptions(); cssPackagerOptions.CompressOutput = CompressOutput; cssPackagerOptions.OutputNaming = GetOutputNaming(); cssPackagerOptions.OutputFolder = OutputFolder; cssPackagerOptions.OutputCdn = OutputCdn; cssPackagerOptions.Variant = Variant; cssPackagerOptions.IsCreatePackage = IsCreatePackage; CssPackagerOptions arg_BD_0 = cssPackagerOptions; CssCompressionOptions cssCompressionOptions = new CssCompressionOptions(); CssCompressionOptions arg_9E_0 = cssCompressionOptions; Func<string, bool> arg_9E_1; if (!CompressionOptionsUseDataUris) { arg_9E_1 = FileMatchers.None; } else { if (CompressionOptionsDataUriWhitelist.Length != 0) { arg_9E_1 = FileMatchers.Whitelist(Enumerable.ToList<string>(Enumerable.Select<ITaskItem, string>(CompressionOptionsDataUriWhitelist, (ITaskItem ti) => ti.ItemSpec))); } else { arg_9E_1 = FileMatchers.All; } } arg_9E_0.UseDataUrisFor = arg_9E_1; cssCompressionOptions.GetCdnImagePath = CdnImagePath.AllIfEnabled(CompressionOptionsUseCdn, this.CompressionOptionsCdnPrefix); arg_BD_0.CompressionOptions = cssCompressionOptions; CssPackagerOptions options = cssPackagerOptions; PackageManager.PackageManager packageManager = new PackageManager.PackageManager(SiteRoot); packageManager.InitialiseCssPackages(PackageDefinition); if (!string.IsNullOrEmpty(PackageName)) { Log.LogMessage("CssBuildPackager: packaging " + base.PackageName + ((Variant == null) ? "" : ("(" + Variant + ")")), new object[0]); Package(PackageName, packageManager, options); } else { foreach (Package current in packageManager._cssPackages) { Log.LogMessage("CssBuildPackager: packaging " + current.Name + ((Variant == null) ? "" : ("(" + Variant + ")")), new object[0]); Package(current.Name, packageManager, options); } } return true; }
public void Package_should_work_as_expected() { var inputFile = Path.Combine(_currentFolder, "TestAssets\\test1.css"); var outputFile = Path.Combine(_currentFolder, "output.css"); if (File.Exists(outputFile)) File.Delete(outputFile); var package = new Package { Name = "Test", ComponentFiles = new[] { inputFile }, }; var packagerOptions = new CssPackagerOptions { OutputFolder = Path.Combine(_currentFolder, "TestAssets"), SiteRoot = _currentFolder, CompressOutput = true, CompressionOptions = new CssCompressionOptions { UseDataUrisFor = FileMatchers.All }, OutputNaming = OutputNamings.CustomPath(outputFile) }; var result = _packager.Package(package, packagerOptions); Assert.IsTrue(result.IsSuccess); Assert.IsTrue(File.Exists(outputFile)); //not if data URIs are used Assert.IsTrue(File.ReadAllBytes(outputFile).Length < File.ReadAllBytes(inputFile).Length); }
public PackagerResults Package(Package package, CssPackagerOptions options) { _imageEmbedder = new CssImageEmbed(new CssImageEmbedOptions{ SiteRoot = options.SiteRoot, UseDataUrisFor = options != null && options.CompressionOptions != null ? options.CompressionOptions.UseDataUrisFor : null }); _imageUseCdn = new CssImageUseCdn(new CssImageUseCdnOptions { SiteRoot = options.SiteRoot, GetCdnImagePath = options != null && options.CompressionOptions != null ? options.CompressionOptions.GetCdnImagePath : null }); var packagerResult = new PackagerResults(); string outputPath = null; // concatenate files if (options.IsCreatePackage) { var sb = new StringBuilder(); foreach (var file in package.ComponentFiles) { if (String.IsNullOrWhiteSpace(file)) continue; if (!File.Exists(file)) throw new ArgumentException("File '" + file + "' doesn't exist! (in package " + package.Name + ")"); // data uris var css = File.ReadAllText(file); if (options.CompressOutput && options.CompressionOptions != null && options.CompressionOptions.UseDataUrisFor != null) { var embedderResult = _imageEmbedder.Compress(css, file); css = embedderResult.Output; packagerResult.Errors = embedderResult.Errors; packagerResult.Warnings = embedderResult.Warnings; } if (options.CompressOutput && options.CompressionOptions != null && options.CompressionOptions.GetCdnImagePath != null) { var embedderResult = _imageUseCdn.Compress(css, file); css = embedderResult.Output; packagerResult.Errors = embedderResult.Errors; packagerResult.Warnings = embedderResult.Warnings; } sb.AppendLine(css); } // YUI compressor string output; if (options.CompressOutput) output = Yahoo.Yui.Compressor.CssCompressor.Compress(sb.ToString()); else output = sb.ToString(); var outputNamingParameters = new OutputNamingParameters { Package = package, PackagedOutput = output, PackagerOptions = options, OutputFilenameSuffix = "css", }; var outputFilename = options.OutputNaming(outputNamingParameters); outputPath = Path.Combine(options.OutputFolder, outputFilename); File.WriteAllText(outputPath, output); } packagerResult.CompiledPackage = new PackagedCss(package, options) { OutputFile = outputPath, IsPackaged = options.IsCreatePackage, SiteRoot = options.SiteRoot, }; return packagerResult; }
private void Package(string packageName, PackageManager.PackageManager packageManager, CssPackagerOptions options) { packageManager.PackageCss(packageName, options); PackagedCss cssPackage = packageManager.GetCssPackage(packageName, Variant); cssPackage.SerializeTo(OutputFolder); }