예제 #1
0
 void AppendCacheBusters(List <string> list)
 {
     for (var i = 0; i < list.Count; i++)
     {
         list[i] += "?cb=" + DextopFileUtil.CalculateCacheBuster(package.Module.MapPath(list[i]));
     }
 }
예제 #2
0
        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;
            }
        }
예제 #3
0
        /// <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;
        }