/// <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; }
/// <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; }