Esempio n. 1
0
        public ProjectBuilder BuildSass()
        {
            var sass     = new SassCompiler();
            var cleancss = new CssMinifier();
            var files    = ResourceMinifier.GetFiles(file =>
                                                     file.FullName.Contains("src" + Path.DirectorySeparatorChar) &&
                                                     file.Extension == ".scss"
                                                     );

            using (var cache = new BuildCache())
            {
                var changedFiles = files.Where(file => !cache.Contains(file)).ToArray();
                if (changedFiles.Any())
                {
                    changedFiles.ForEach(file =>
                    {
                        cache.AddCache(file);
                        WriteInfo($"Sass build: {file}");
                    });
                    Console.Write(sass.Run().Trim());
                    var results = ResourceMinifier.GetFiles(f => f.FullName.Contains(".sass-output" + Path.DirectorySeparatorChar));
                    Parallel.ForEach(results, file =>
                    {
                        var min     = cleancss.Minify(File.ReadAllText(file).Replace("@charset \"UTF-8\";", ""));
                        var minFile = ResourceMinifier.GetMinimizedFileName(file);
                        File.WriteAllText(minFile, min);
                        // WriteHint($"\t=> {minFile}");
                    });
                }
                cache.SaveCache();
            }
            WriteSuccess("Sass build complete.");
            return(this);
        }
        public ProjectBuilder BuildSass()
        {
            var sass     = new SassCompiler();
            var cleancss = new CssMinifier();
            var files    = ResourceMinifier.GetFiles(file =>
                                                     file.Extension == ".scss"
                                                     );

            using (var cache = new BuildCache())
            {
                var changedFiles = files.Where(file => !cache.Contains(file)).ToArray();
                if (changedFiles.Any())
                {
                    string getOutputCacheFilename(string f)
                    {
                        return(".sass-output/" + f
                               .Replace(".scss", ".css")
                               .Replace($"src{Path.DirectorySeparatorChar}", ""));
                    }

                    changedFiles.ForEach(file => {
                        cache.AddCache(file);
                        WriteInfo($"Sass build: {file}");
                    });
                    WriteInfo(sass.Run("").Trim());
                    Parallel.ForEach(changedFiles
                                     .Where(f => !Path.GetFileName(f).StartsWith("_")),
                                     f => {
                        // var sass = new SassSingleCompiler();
                        // var css = sass.Run(File.ReadAllText(file));
                        // File.WriteAllText(getOutputCacheFilename(file), css);
                        var file    = getOutputCacheFilename(f);
                        var min     = cleancss.Minify(File.ReadAllText(file).Replace("@charset \"UTF-8\";", ""));
                        var minFile = ResourceMinifier.GetMinimizedFileName(file);
                        File.WriteAllText(minFile, min);
                        UpdateCachedMinFile(minFile);
                        // WriteHint($"\t=> {minFile}");
                    });
                    // var results = ResourceMinifier.GetFiles(f => f.FullName.Contains(".sass-output" + Path.DirectorySeparatorChar));
                    // Parallel.ForEach(results, file =>
                    // {
                    //   var min = cleancss.Minify(File.ReadAllText(file).Replace("@charset \"UTF-8\";", ""));
                    //   var minFile = ResourceMinifier.GetMinimizedFileName(file);
                    //   File.WriteAllText(minFile, min);
                    // });
                }
                cache.SaveCache();
            }
            WriteSuccess("Sass build complete.");
            return(this);
        }