コード例 #1
0
        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);
        }
コード例 #2
0
        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);
                }
            });
        }
コード例 #3
0
        public static bool HasMinFile(string file, out string minFile)
        {
            minFile = FileMinifier.GetMinFileName(file);

            return(File.Exists(minFile));
        }
コード例 #4
0
ファイル: SPMinEventReceiver.cs プロジェクト: spmin/spmin
        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;
        }