/// <summary>
        /// Constructs a instance of NUglify JS minifier
        /// </summary>
        /// <param name="nuglifyConfig">Configuration settings of NUglify Minifier</param>
        public NUglifyJsMinifier(NUglifySettings nuglifyConfig)
        {
            _jsParserConfiguration = new CodeSettings();

            JsMinifierSettings jsMinifierConfiguration = nuglifyConfig.JsMinifier;

            MapCommonSettings(this, jsMinifierConfiguration);
            AlwaysEscapeNonAscii          = jsMinifierConfiguration.AlwaysEscapeNonAscii;
            AmdSupport                    = jsMinifierConfiguration.AmdSupport;
            CollapseToLiteral             = jsMinifierConfiguration.CollapseToLiteral;
            ConstStatementsMozilla        = jsMinifierConfiguration.ConstStatementsMozilla;
            DebugLookupList               = jsMinifierConfiguration.DebugLookupList;
            ErrorIfNotInlineSafe          = jsMinifierConfiguration.ErrorIfNotInlineSafe;
            EvalLiteralExpressions        = jsMinifierConfiguration.EvalLiteralExpressions;
            EvalTreatment                 = jsMinifierConfiguration.EvalTreatment;
            IgnoreConditionalCompilation  = jsMinifierConfiguration.IgnoreConditionalCompilation;
            IgnorePreprocessorDefines     = jsMinifierConfiguration.IgnorePreprocessorDefines;
            InlineSafeStrings             = jsMinifierConfiguration.InlineSafeStrings;
            KnownGlobalNamesList          = jsMinifierConfiguration.KnownGlobalNamesList;
            LocalRenaming                 = jsMinifierConfiguration.LocalRenaming;
            MacSafariQuirks               = jsMinifierConfiguration.MacSafariQuirks;
            ManualRenamesProperties       = jsMinifierConfiguration.ManualRenamesProperties;
            NoAutoRenameList              = jsMinifierConfiguration.NoAutoRenameList;
            PreserveFunctionNames         = jsMinifierConfiguration.PreserveFunctionNames;
            PreserveImportantComments     = jsMinifierConfiguration.PreserveImportantComments;
            QuoteObjectLiteralProperties  = jsMinifierConfiguration.QuoteObjectLiteralProperties;
            RemoveFunctionExpressionNames = jsMinifierConfiguration.RemoveFunctionExpressionNames;
            RemoveUnneededCode            = jsMinifierConfiguration.RemoveUnneededCode;
            RenamePairs                   = jsMinifierConfiguration.RenamePairs;
            ReorderScopeDeclarations      = jsMinifierConfiguration.ReorderScopeDeclarations;
            ScriptVersion                 = jsMinifierConfiguration.ScriptVersion;
            StrictMode                    = jsMinifierConfiguration.StrictMode;
            StripDebugStatements          = jsMinifierConfiguration.StripDebugStatements;
        }
Esempio n. 2
0
        /// <summary>
        /// Constructs a instance of Dean Edwards' JS minifier
        /// </summary>
        /// <param name="createJsEngineInstance">Delegate that creates an instance of JS engine</param>
        /// <param name="packerConfig">Configuration settings of Dean Edwards' Minifier</param>
        public EdwardsJsMinifier(Func <IJsEngine> createJsEngineInstance, PackerSettings packerConfig)
        {
            JsMinifierSettings jsMinifierConfig = packerConfig.JsMinifier;

            ShrinkVariables = jsMinifierConfig.ShrinkVariables;
            Base62Encode    = jsMinifierConfig.Base62Encode;

            if (createJsEngineInstance == null)
            {
                string jsEngineName = packerConfig.JsEngine.Name;
                if (string.IsNullOrWhiteSpace(jsEngineName))
                {
                    throw new ConfigurationErrorsException(
                              string.Format(CoreStrings.Configuration_JsEngineNotSpecified,
                                            "packer",
                                            @"
  * JavaScriptEngineSwitcher.Msie
  * JavaScriptEngineSwitcher.V8
  * JavaScriptEngineSwitcher.ChakraCore",
                                            "MsieJsEngine")
                              );
                }

                createJsEngineInstance = () => JsEngineSwitcher.Current.CreateEngine(jsEngineName);
            }
            _createJsEngineInstance = createJsEngineInstance;
        }
        /// <summary>
        /// Constructs a instance of YUI JS minifier
        /// </summary>
        /// <param name="yuiConfig">Configuration settings of YUI Minifier</param>
        public YuiJsMinifier(YuiSettings yuiConfig)
        {
            _jsCompressor = new JavaScriptCompressor();

            JsMinifierSettings jsMinifierConfig = yuiConfig.JsMinifier;

            CompressionType       = jsMinifierConfig.CompressionType;
            ObfuscateJavascript   = jsMinifierConfig.ObfuscateJavascript;
            PreserveAllSemicolons = jsMinifierConfig.PreserveAllSemicolons;
            DisableOptimizations  = jsMinifierConfig.DisableOptimizations;
            IgnoreEval            = jsMinifierConfig.IgnoreEval;
            LineBreakPosition     = jsMinifierConfig.LineBreakPosition;
            Encoding      = ParseEncoding(jsMinifierConfig.Encoding);
            ThreadCulture = ParseThreadCulture(jsMinifierConfig.ThreadCulture);
            Severity      = jsMinifierConfig.Severity;
        }
        /// <summary>
        /// Constructs a instance of Uglify JS minifier
        /// </summary>
        /// <param name="createJsEngineInstance">Delegate that creates an instance of JS engine</param>
        /// <param name="uglifyConfig">Configuration settings of Uglify Minifier</param>
        public UglifyJsMinifier(Func <IJsEngine> createJsEngineInstance, UglifySettings uglifyConfig)
        {
            JsMinifierSettings     jsMinifierConfig     = uglifyConfig.Js;
            ParsingSettings        parsingConfig        = jsMinifierConfig.Parsing;
            CompressionSettings    compressionConfig    = jsMinifierConfig.Compression;
            ManglingSettings       manglingConfig       = jsMinifierConfig.Mangling;
            CodeGenerationSettings codeGenerationConfig = jsMinifierConfig.CodeGeneration;

            ParsingOptions = new ParsingOptions
            {
                BareReturns = parsingConfig.BareReturns,
                Strict      = parsingConfig.Strict
            };

            CompressionOptions = new CompressionOptions
            {
                Angular               = compressionConfig.Angular,
                Booleans              = compressionConfig.Booleans,
                Cascade               = compressionConfig.Cascade,
                CollapseVars          = compressionConfig.CollapseVars,
                Comparisons           = compressionConfig.Comparisons,
                Compress              = compressionConfig.Compress,
                Conditionals          = compressionConfig.Conditionals,
                DeadCode              = compressionConfig.DeadCode,
                DropConsole           = compressionConfig.DropConsole,
                DropDebugger          = compressionConfig.DropDebugger,
                Evaluate              = compressionConfig.Evaluate,
                GlobalDefinitions     = compressionConfig.GlobalDefinitions,
                HoistFunctions        = compressionConfig.HoistFunctions,
                HoistVars             = compressionConfig.HoistVars,
                IfReturn              = compressionConfig.IfReturn,
                JoinVars              = compressionConfig.JoinVars,
                KeepFunctionArgs      = compressionConfig.KeepFunctionArgs,
                KeepInfinity          = compressionConfig.KeepInfinity,
                Loops                 = compressionConfig.Loops,
                NegateIife            = compressionConfig.NegateIife,
                Passes                = compressionConfig.Passes,
                PropertiesDotNotation = compressionConfig.PropertiesDotNotation,
                PureGetters           = compressionConfig.PureGetters,
                PureFunctions         = compressionConfig.PureFunctions,
                ReduceVars            = compressionConfig.ReduceVars,
                Sequences             = compressionConfig.Sequences,
                TopLevel              = compressionConfig.TopLevel,
                TopRetain             = compressionConfig.TopRetain,
                Unsafe                = compressionConfig.Unsafe,
                UnsafeMath            = compressionConfig.UnsafeMath,
                UnsafeProto           = compressionConfig.UnsafeProto,
                UnsafeRegExp          = compressionConfig.UnsafeRegExp,
                Unused                = compressionConfig.Unused
            };

            ManglingOptions = new ManglingOptions
            {
                Eval     = manglingConfig.Eval,
                Except   = manglingConfig.Except,
                Mangle   = manglingConfig.Mangle,
                TopLevel = manglingConfig.TopLevel,
            };

            CodeGenerationOptions = new CodeGenerationOptions
            {
                AsciiOnly            = codeGenerationConfig.AsciiOnly,
                Beautify             = codeGenerationConfig.Beautify,
                Bracketize           = codeGenerationConfig.Bracketize,
                Comments             = codeGenerationConfig.Comments,
                IndentLevel          = codeGenerationConfig.IndentLevel,
                IndentStart          = codeGenerationConfig.IndentStart,
                InlineScript         = codeGenerationConfig.InlineScript,
                KeepQuotedProperties = codeGenerationConfig.KeepQuotedProperties,
                MaxLineLength        = codeGenerationConfig.MaxLineLength,
                PreserveLine         = codeGenerationConfig.PreserveLine,
                QuoteKeys            = codeGenerationConfig.QuoteKeys,
                QuoteStyle           = codeGenerationConfig.QuoteStyle,
                Semicolons           = codeGenerationConfig.Semicolons,
                SpaceColon           = codeGenerationConfig.SpaceColon,
                UnescapeRegexps      = codeGenerationConfig.UnescapeRegexps,
                Width    = codeGenerationConfig.Width,
                WrapIife = codeGenerationConfig.WrapIife
            };

            KeepFunctionNames = jsMinifierConfig.KeepFunctionNames;
            ScrewIe8          = jsMinifierConfig.ScrewIe8;
            Severity          = jsMinifierConfig.Severity;

            if (createJsEngineInstance == null)
            {
                string jsEngineName = uglifyConfig.JsEngine.Name;
                if (string.IsNullOrWhiteSpace(jsEngineName))
                {
                    throw new ConfigurationErrorsException(
                              string.Format(CoreStrings.Configuration_JsEngineNotSpecified,
                                            "uglify",
                                            @"
  * JavaScriptEngineSwitcher.Msie
  * JavaScriptEngineSwitcher.V8
  * JavaScriptEngineSwitcher.ChakraCore",
                                            "MsieJsEngine")
                              );
                }

                createJsEngineInstance = () => JsEngineSwitcher.Instance.CreateEngine(jsEngineName);
            }
            _createJsEngineInstance = createJsEngineInstance;
        }