æšå¹Ž9æã
MSIE JavaScript Engine for .NETã©ã€ãã©ãªã
JavaScript Engine Switcherã©ã€ãã©ãªã«çœ®ãæãããã
BundleTransformer.CleanCssã¢ãžã¥ãŒã«ãäœæãããŠ
ä»¥æ¥ ãBundle Transformerã«å®è³ªçãªé©åœçãªå€æŽã¯ãããŸããã§ããã å€æŽã¯äž»ã«é²åçã§ããïŒãããã©ã€ã¶ãŒãšãã©ã³ã¹ã¬ãŒã¿ãŒã®æ°ããããŒãžã§ã³ïŒãããžã§ã¯ãã§ã®äœæ¥ã®äžã§æãæ¥åžžçã§é£ããéšåïŒã®ãµããŒããè¿œå ããããã€ããŒãªãã°ãä¿®æ£ãããçç£æ§ãé«ããããã®äœæ¥ãç¶ç¶ãããŸããã
ãããããã®å€ã¯ãã¹ãŠãå€ãããŸããã5ææ«ãã7æã«ãããŠãBundle TransformerãŠãŒã¶ãŒãããããžã§ã¯ããæ¹åããããã®èšå€§ãªæ°ã®æšå¥šäºé
ãå¯ããããŸããã ãããã®ã»ãšãã©ã¯ããŒãžã§ã³1.9.0ããã³ãã®åŸã®å€ã®æŽæ°ã§å®è£
ãããŸããã ãã®èšäºã§ã¯ããããã®ãã¡æãéèŠãªãã®ãæ€èšããŸãã
ã¯ã©ã¹StyleTransformerããã³ScriptTransformer
System.Web.Optimizationã® CssMinify
ããã³
JsMinify
ãšã®é¡æšã«ãã£ãŠååãéžæãããããã
CssTransformer
ã¯ã
CssTransformer
ããã³
JsTransformer
ã¯ã©ã¹ã«å®å
šã«æåããååã¯éžæãããŸããã§ããã
ScriptBundle
ã¯ã©ã¹ãš
ScriptBundle
ã¯ã©ã¹ãSystem.Web.Optimizationã«ç»å Žãããšãããããã®ååã¯äŸ¡å€ããªãããšãæããã«ãªããŸããã
ç§ã¯ãããã®ã¯ã©ã¹ã®ååå€æŽãé·ãéé
ãããŸããããããŒãžã§ã³1.9.0ã§äœæ¥ããŠãããšãã«ããã¹ãŠåãååã«å€æŽããããšã«ããŸããã çŸåšããããã¯
StyleTransformer
ããã³
ScriptTransformer
ãšåŒã°ããŠããŸãã å€ã
CssTransformer
ããã³
JsTransformer
ã¯ã©ã¹ã¯ã«ãŒãã«ã§åŒãç¶ã䜿çšã§ããŸãïŒæ°ããã¯ã©ã¹ã®ã©ãããŒãšããŠå®è£
ã
Obsolete
ãŸãïŒãã
Obsolete
ãããšèŠãªããïŒ
Obsolete
å±æ§ã§ããŒã¯ïŒãããŒãžã§ã³2.0.0ã§åé€ãããŸãã
ãã¹ãããã»ããµãŒ
5æäžæ¬ã«ãVegard LarsenïŒãã«ãŠã§ãŒã®äŒç€Ÿ
Digital Creationsã®åŸæ¥å¡ïŒãããã«ãªã¯ãšã¹ã
ãAutoprefixerã®ãµããŒãããåãåããŸããã ã³ãŒããèŠããšãçŸåšã®Bundle Transformerã¢ãŒããã¯ãã£ããã®ãããªã¢ãžã¥ãŒã«ã®å®è£
ã«é©ããŠããªãããšãããã«æããã«ãªããŸããã Vegardã¯ããã®ã¢ãžã¥ãŒã«ã®æ©èœãã¹ã¿ã€ã«ãã©ã³ã¹ã¬ãŒã¿ãŒã®åœ¢åŒã§å®è£
ããŸãããããã¯ãä»ã®ãã¹ãŠã®ãã©ã³ã¹ã¬ãŒã¿ãŒïŒLESSãSassãªã©ïŒã®åŸã«å®è¡ãããããšã«ãªã£ãŠããŸãã ãã®å®è£
å
šäœããããã³ã°ã®ããã«èŠããããããã®ãã«ãªã¯ãšã¹ããæåŠããããšã«ããŸããã ãã®çµæãVegardã¯NuGetã§ã¢ãžã¥ãŒã«ã®éå
¬åŒããŒãžã§ã³ã§ãã
BundleTransformer.Autoprefixer.Unofficialãå
¬éããæ°ããBundle Transformerã¢ãŒããã¯ãã£ã®äœæ¥ãéå§ããŸããã
æ°ããã¿ã€ãã®ã¢ãžã¥ãŒã«ãå¿
èŠã§ãããããã¯ããã©ã³ã¹ã¬ãŒã¿ãŒã®åŸããããã€ã¶ãŒã®åã«èµ·åããå¿
èŠãããããã®ãããªã¢ãžã¥ãŒã«ãåŒã³åºãåæ°ãšé åºã¯éçºè
ã決å®ããå¿
èŠããããŸãã æ°ããã¿ã€ãã®ã¢ãžã¥ãŒã«ã®ååãšããŠãAndrei Sitnikã«ãã£ãŠé ãããçšèªããã¹ãããã»ããµãŒãã䜿çšããããšã«ããŸããïŒAndrei Sitnikã誰ã§ãããããŸãã¯ãã¹ãããã»ããµãŒãäœã§ãããããããªãå Žå
ã¯ãFrontflipããããã£ã¹ãã®ç¬¬6å·ãèãããšããå§ãããŸãïŒã
Bundle Transformerã®ãã¹ã
IPostProcessor
ã¯ã
IPostProcessor
ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããã¯ã©ã¹ããŸãã¯
BundleTransformer.Core.PostProcessors
åå空éãã
PostProcessorBase
åºæ¬ã¯ã©ã¹ãç¶æ¿ããã¯ã©ã¹ã«
BundleTransformer.Core.PostProcessors
ãŸãã ä»ã®ã¿ã€ãã®ã¢ãžã¥ãŒã«ïŒã¢ããã¿ãŒïŒãšåæ§ã«ããã¹ãããã»ããµãŒã¯
Web.config
ãã¡ã€ã«ã«ç»é²ããå¿
èŠããããŸãã äŸãšããŠãCSSãã¹ãããã»ããµãŒã䜿çšããç»é²ããã»ã¹ãæ€èšããŠãã ããã
<configuration> ⊠<bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd"> <core âŠ> <css defaultPostProcessors="UrlRewritingCssPostProcessor,AutoprefixCssPostProcessor" âŠ> <postProcessors> <add name="UrlRewritingCssPostProcessor" type="BundleTransformer.Core.PostProcessors.UrlRewritingCssPostProcessor, BundleTransformer.Core" useInDebugMode="false" /> <add name="AutoprefixCssPostProcessor" type="BundleTransformer.Autoprefixer.PostProcessors.AutoprefixCssPostProcessor, BundleTransformer.Autoprefixer" useInDebugMode="true" /> </postProcessors> </css> ⊠</core> ⊠</bundleTransformer> ⊠</configuration>
2ã€ã®ãã¹ã
/configuration/bundleTransformer/core/css/postProcessors
ã
/configuration/bundleTransformer/core/css/postProcessors
ç»é²ãããŠã
/configuration/bundleTransformer/core/css/postProcessors
ïŒ
- UrlRewritingCssPostProcessorã çžå¯Ÿãã¹ã絶察ãã¹ã«å€æããŸãïŒãã¹ãããã»ããµãšããŠå®è£
ãããæšæºã®ãã³ãã«ãã©ã³ã¹ãã©ãŒããŒæ©èœïŒã
- AutoprefixCssPostProcessorã Bundle Transformerã«AutoprefixerãµããŒããè¿œå ããŸãã
äžèŠãããã¯
defaultMinifier
ç»é²ã«éåžžã«äŒŒãŠããŸãããããããªéãã1ã€ãããŸãïŒ
/configuration/bundleTransformer/core/css
èŠçŽ ã®
defaultMinifier
å±æ§ã§
defaultMinifier
1ã€ã ãæå®ã§ããå Žåã
defaultMinifier
å±æ§ã§ä»»æã®æ°ã®ãã¹ã
defaultPostProcessors
ãæå®ã§ããŸãïŒãŒãã§ãïŒ ïŒ ããã«ããã®å±æ§ã§ãã¹ãããã»ããµã®ååãæå®ããé åºã«ãã£ãŠããã¹ãããã»ããµãå®è¡ãããé åºã決ãŸããŸãã å±æ§ãæ¬ èœããŠããå Žåã
UrlRewritingCssPostProcessor
ããã©ã«ãã®
UrlRewritingCssPostProcessor
䜿çšãããŸãã
ãŸãããã®ã³ãŒãã¯ããã¹ã
useInDebugMode
å±æ§ã®å€ãç°ãªãããšã瀺ããŠããŸãïŒ
UrlRewritingCssPostProcessor
å Žåã¯
false
ïŒãã¹ãŠã®ãã¡ã€ã«ã1ã€ã«çµåããããªãªãŒã¹ã¢ãŒãã§ã®ã¿çµ¶å¯Ÿãã¹ãžã®çžå¯Ÿãã¹ã®å€æãå¿
èŠã§ãïŒãããã³
AutoprefixCssPostProcessor
ã¯
true
ïŒãã³ããŒãã¬ãã£ãã¯ã¹ã®æŽæ°ãå¿
èŠã§ãïŒãããã°ã¢ãŒãããªãªãŒã¹ã¢ãŒãïŒã
JavaScriptãã¹ã
/configuration/bundleTransformer/core/js
ç»é²ã¯ãæ§æèŠçŽ
/configuration/bundleTransformer/core/js
ã§è¡ããªããã°ãªããªãããšãé€ããŠãCSSãã¹ã
/configuration/bundleTransformer/core/js
ç»é²ãšå®è³ªçã«éãã¯ãããŸããã
匷åããããããã°HTTPãã³ãã©ãŒ
éåžžãã»ãšãã©ã®Bundle TransformerãŠãŒã¶ãŒã¯å®£èšçãªæ¹æ³ã§ïŒ
Web.config
ãä»ããŠïŒã¢ãžã¥ãŒã«ãæ§æããŸãããå Žåã«ãã£ãŠã¯åœä»€çãªã¢ãããŒããå¿
èŠã§ãã ããšãã°ãLESSå€æ°ã䜿çšããå ŽåïŒ
using System.Collections.Generic; using System.Web.Optimization; using BundleTransformer.Core.Builders; using BundleTransformer.Core.Orderers; using BundleTransformer.Core.Transformers; using BundleTransformer.Core.Translators; using BundleTransformer.Less.Translators; public class BundleConfig { public static void RegisterBundles(BundleCollection bundles) { var nullBuilder = new NullBuilder(); var nullOrderer = new NullOrderer(); var lessTranslator = new LessTranslator { GlobalVariables = "my-variable='Hurrah!'", ModifyVariables = "font-family-base='Comic Sans MS';body-bg=lime;font-size-h1=50px" }; var styleTransformer = new StyleTransformer( new List<ITranslator> { lessTranslator }); var commonStylesBundle = new Bundle("~/Bundles/BootstrapStyles"); commonStylesBundle.Include("~/Content/bootstrap/bootstrap.less"); commonStylesBundle.Builder = nullBuilder; commonStylesBundle.Transforms.Add(styleTransformer); commonStylesBundle.Orderer = nullOrderer; bundles.Add(commonStylesBundle); } }
äžèšã®ã³ãŒãã§ã¯ã
LessTranslator
ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãæ瀺çã«äœæãã
ModifyVariables
ãš
ModifyVariables
ã䜿çšããŠLESSå€æ°ãæ§æããŸãã ãã®ã¢ãããŒãã䜿çšãããšãå€éšãœãŒã¹ïŒããŒã¿ããŒã¹ãªã©ïŒããååŸããLESSå€æ°ã®å€ããã©ã³ã¹ã¬ãŒã¿ãŒã«æž¡ãããšãã§ããŸãã
LESSå€æ°ãæäœãã2çªç®ã®æ¹æ³ããããŸãã æåã«ãã«ã¹ã¿ã èŠçŽ å€æãäœæããå¿
èŠããããŸãã
using System.Text; using System.Web.Optimization; public sealed class InjectContentItemTransform : IItemTransform { private readonly string _beforeContent; private readonly string _afterContent; public InjectContentItemTransform(string beforeContent, string afterContent) { _beforeContent = beforeContent ?? string.Empty; _afterContent = afterContent ?? string.Empty; } public string Process(string includedVirtualPath, string input) { if (_beforeContent.Length == 0 && _afterContent.Length == 0) { return input; } var contentBuilder = new StringBuilder(); if (_beforeContent.Length > 0) { contentBuilder.AppendLine(_beforeContent); } contentBuilder.AppendLine(input); if (_afterContent.Length > 0) { contentBuilder.AppendLine(_afterContent); } return contentBuilder.ToString(); } }
ãããŠããã¡ã€ã«ããã³ãã«ã«è¿œå ãããšãã«ç»é²ããŸãã
using System.Web.Optimization; using BundleTransformer.Core.Bundles; using BundleTransformer.Core.Orderers; public class BundleConfig { public static void RegisterBundles(BundleCollection bundles) { var nullOrderer = new NullOrderer(); const string beforeLessCodeToInject = @"@my-variable: 'Hurrah!';"; const string afterLessCodeToInject = @"@font-family-base: 'Comic Sans MS'; @body-bg: lime; @font-size-h1: 50px;"; var commonStylesBundle = new CustomStyleBundle("~/Bundles/BootstrapStyles"); commonStylesBundle.Include( "~/Content/bootstrap/bootstrap.less", new InjectContentItemTransform(beforeLessCodeToInject, afterLessCodeToInject)); commonStylesBundle.Orderer = nullOrderer; bundles.Add(commonStylesBundle); } }
æ®å¿µãªãããäžèšã®ã³ãŒãäŸã¯ãªãªãŒã¹ã¢ãŒãã§ã®ã¿æ©èœããŠããŸããã ããã¯ããããã°HTTPãã³ãã©ãŒããã³ãã«èšå®ã«ã€ããŠäœããèªèããããèŠæ±ããããã¡ã€ã«ã®ã³ãŒããåã«ãããŒããã£ã¹ããããšããäºå®ã«ãããã®ã§ãã
ãã®åé¡ã解決ããã«ã¯ããŸããèŠæ±ããããã¡ã€ã«ãå«ãŸãããã³ãã«ã®URLãHTTPãããã°ãã³ãã©ãŒã«æž¡ãæ¹æ³ãèŠã€ããå¿
èŠããããŸããã ãã³ã³ãã€ã©ã䜿çšããŠ
System.Web.Optimization.dll
ã®ã¢ã»ã³ããªã³ãŒãã調ã¹ããšããã解決çãèŠã€ãããŸãããç¬èªã®ããŒãžã§ã³ã®
BundleResolver
ã¯ã©ã¹ãäœæãã察å¿ããã¯ã©ã¹ã«ç»é²ããå¿
èŠããããŸãã å®è£
ã®è©³çŽ°ã«ã€ããŠã¯èª¬æããŸããããäœæããã¯ã©ã¹ã®äœ¿çšæ¹æ³ã瀺ããŸãã
⊠using BundleTransformer.Core.Resolvers; public class BundleConfig { public static void RegisterBundles(BundleCollection bundles) { BundleResolver.Current = new CustomBundleResolver(); ⊠} }
ãã®åŸããããã°ã¢ãŒãã§ã次ã®ã¿ã€ãã®ãã¡ã€ã«ãžã®ãªã³ã¯ãçæãããŸãã
<link href="/Content/bootstrap/bootstrap.less?bundleVirtualPath=%7e%2fBundles%2fBootstrapStyles" rel="stylesheet">
ã¯ãšãªæååãã©ã¡ãŒã¿ãŒ
bundleVirtualPath
ã¯ããã³ãã«URLãå«ãŸããŸãã
ãã®ããããã³ãã«URLãèªç±ã«äœ¿çšã§ããããã«ãã«ã¹ã¿ã ãšã¬ã¡ã³ããã©ã³ã¹ãã©ãŒã¡ãŒã·ã§ã³ããã³ãã³ãã«ã¬ãã«ã§æå®ããããã©ã³ã¹ãã©ãŒã¡ãŒã·ã§ã³ïŒãã©ã³ã¹ã¬ãŒã¿ãŒãšãã¹ãããã»ããµãŒïŒããããŒã¹ãããã°HTTPãã³ãã©ãŒã®èŠæ±ãã¡ã€ã«ã«é©çšããæ©èœãè¿œå ããŸããã
ããã«ã2ã€ã®è¿œå ã®HTTPãã³ãã©ãŒãäœæãããŸããã
- CssAssetHandlerã CSSãã¡ã€ã«ãåŠçããŸãã
- JsAssetHandlerã JavaScriptãã¡ã€ã«ãåŠçããŸãã
ãããã䜿çšãããšãèŠçŽ ããã³ãã¹ãããã»ããµã®ã«ã¹ã¿ã å€æãéçãã¡ã€ã«ã«é©çšã§ããŸãã èŠæ±ãããéçãã¡ã€ã«ããã³ãã«ã«å«ãŸããŠããªãå Žåããããã®HTTPãã³ãã©ãŒã¯
System.Web.StaticFileHandler
ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã«èŠæ±ãæž¡ããŸãã ãã©ã³ã¹ã¬ãŒã¿ãŒã«ãã³ãã«ãããŠãããããã°HTTPãã³ãã©ãŒãšã¯å¯Ÿç
§çã«ããããã®HTTPãã³ãã©ãŒã¯ïŒNuGetããã±ãŒãžã®ã€ã³ã¹ããŒã«äžã«ïŒ
Web.config
ãã¡ã€ã«ã«èªåçã«ç»é²ããããæåã§ç»é²ããå¿
èŠããããŸãã
<configuration> ⊠<system.webServer> ⊠<handlers> ⊠<add name="CssAssetHandler" path="*.css" verb="GET" type="BundleTransformer.Core.HttpHandlers.CssAssetHandler, BundleTransformer.Core" resourceType="File" preCondition="" /> <add name="JsAssetHandler" path="*.js" verb="GET" type="BundleTransformer.Core.HttpHandlers.JsAssetHandler, BundleTransformer.Core" resourceType="File" preCondition="" /> ⊠</handlers> ⊠</system.webServer> ⊠</configuration>
Web.configãã¡ã€ã«ã®ãã¡ã€ã«æ¡åŒµåãšãªãœãŒã¹ã¿ã€ããäžèŽããã
以åã¯ããã¡ã€ã«æ¡åŒµåããªãœãŒã¹ã¿ã€ãã«ãããã³ã°ããããšã¯ã
Asset
ã³ãŒãã«ããŒãã³ãŒããããŠããŸããã ããã§ã
Web.config
ãã¡ã€ã«ã®æ§æèŠçŽ
fileExtensions
ã䜿çšãããŸãã
<configuration> ⊠<bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd"> <core âŠ> <css âŠ> ⊠<fileExtensions> <add fileExtension=".css" assetTypeCode="Css" /> <add fileExtension=".less" assetTypeCode="Less" /> <add fileExtension=".sass" assetTypeCode="Sass" /> <add fileExtension=".scss" assetTypeCode="Scss" /> </fileExtensions> </css> <js âŠ> ⊠<fileExtensions> <add fileExtension=".js" assetTypeCode="JavaScript" /> <add fileExtension=".coffee" assetTypeCode="CoffeeScript" /> <add fileExtension=".litcoffee" assetTypeCode="LiterateCoffeeScript" /> <add fileExtension=".coffee.md" assetTypeCode="LiterateCoffeeScript" /> <add fileExtension=".ts" assetTypeCode="TypeScript" /> <add fileExtension=".mustache" assetTypeCode="Mustache" /> <add fileExtension=".handlebars" assetTypeCode="Handlebars" /> <add fileExtension=".hbs" assetTypeCode="Handlebars" /> </fileExtensions> </js> ⊠</core> ⊠</bundleTransformer> ⊠</configuration>
äžèšã®äŸã¯ãå
¬åŒã®Bundle Transformerã¢ãžã¥ãŒã«ããã¹ãŠã€ã³ã¹ããŒã«ãããŠããç¶æ³ã瀺ããŠããŸãïŒ
.css
ããã³
.js
æ¡åŒµåã®ãããã³ã°ã¯ã«ãŒãã«ã®ã€ã³ã¹ããŒã«æã«è¿œå ãããæ®ãã¯å¯Ÿå¿ãããã©ã³ã¹ã¬ãŒã¿ãŒã¢ãžã¥ãŒã«ã®ã€ã³ã¹ããŒã«æã«è¿œå ãããŸãïŒã ãã®ãããªã¢ãŒããã¯ãã£ã«ã¯ã次ã®å©ç¹ããããŸãã
- æªäœ¿çšã®ãããã³ã°ãä¿åããå¿
èŠã¯ãããŸããã ååãšããŠãå®éã®ãããžã§ã¯ãã§ã¯ããã¹ãŠã®ã¿ã€ãã®ç¿»èš³è
ãã€ã³ã¹ããŒã«ããå¿
èŠã¯ãããŸããïŒããšãã°ãLESSãšSassã®åæ䜿çšã¯éåžžã«ãŸãã§ãïŒããã®ããããããžã§ã¯ãã«ä¿åãããæ¯èŒã¯å°ãªããªããŸãã
- éå
¬åŒã®ç¿»èš³ã¢ãžã¥ãŒã«ãäœæããæ©èœã ã«ãŒãã«ã³ãŒãã«äŸåããªããªã£ããããBundle TransformerãŠãŒã¶ãŒã¯ç¬èªã®ãã©ã³ã¹ã¬ãŒã¿ãŒã¢ãžã¥ãŒã«ãäœæã§ããŸãã ãã®ãããªã¢ãžã¥ãŒã«ã®äŸãšããŠã AngularBundle NuGetããã±ãŒãžããããŸãã ããã¯ãã€ã³ã¹ããŒã«ããããšã次ã®ãããã³ã°ã
Web.config
ãã¡ã€ã«ã«è¿œå ããŸãã
<configuration> ⊠<bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd"> <core> ⊠<js âŠ> ⊠<fileExtensions> ⊠<add fileExtension=".html" assetTypeCode="AngularTemplate" /> ⊠</fileExtensions> </js> ⊠</core> ⊠</bundleTransformer> ⊠</configuration>
- æ°ãããã¡ã€ã«æ¡åŒµåãæ¢åã®ç¿»èš³ã¢ãžã¥ãŒã«ã«ãã€ã³ãããŸãã ããšãã°ãBundleTransformer.Hoganã¢ãžã¥ãŒã«ã§æ¡åŒµåã
.html
ãã¡ã€ã«ã®åŠçãéå§ããå Žåã¯ã次ã®ã³ãŒããWeb.config
ãã¡ã€ã«ã«è¿œå ããã ãã§ãã
<configuration> ⊠<bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd"> <core âŠ> ⊠<js âŠ> ⊠<fileExtensions> ⊠<add fileExtension=".html" assetTypeCode="Mustache" /> ⊠</fileExtensions> </js> ⊠</core> ⊠</bundleTransformer> ⊠<system.webServer> ⊠<handlers> ⊠<add name="HtmlAssetHandler" path="*.html" verb="GET" type="BundleTransformer.Hogan.HttpHandlers.HoganAssetHandler, BundleTransformer.Hogan" resourceType="File" preCondition="" /> ⊠</handlers> ⊠</system.webServer> ⊠</configuration>
æå°åããåã«ãã¡ã€ã«ã³ãŒããçµåãã
Bundle Transformerã¯ãSystem.Web.Optimizationãšã¯ç°ãªããåãã¡ã€ã«ãåå¥ã«åŠçããŸãããã®ã¢ãããŒãã«ã¯ããã€ãã®å©ç¹ããããŸãã
- ããŸããŸãªã¿ã€ãã®ãªãœãŒã¹ïŒCSSãLESSãSassãã¡ã€ã«ãªã©ïŒã1ã€ã®ãã³ãã«ã«çµåããããšãå¯èœã«ãªããŸãã
- 以åã«æå°åããããã¡ã€ã«ïŒæ¡åŒµå
.min.css
ããã³.min.js
ãã¡ã€ã«ïŒã®ç¹°ãè¿ãæå°åã¯.min.js
ãŸãããããã«ãããã»ãšãã©ã®å Žåããã³ãã«ãžã®æåã®ã¢ã¯ã»ã¹æã®æå°åé床ãåäžããŸãã
ãããã
æè¿ã®ãããã€ã¶ãŒãæäŸããæ§é æå°åæ©èœïŒYandexã®
CSSOãªã© ïŒãæ倧éã«æŽ»çšããããããäžéšã®Bundle TransformerãŠãŒã¶ãŒã¯ãã®ã¢ãããŒãã奜ãŸãªãã£ãã
ãããã£ãŠãæ°ããããŒãžã§ã³ã§ã¯ã
css
ããã³
js
æ§æèŠçŽ ã«
combineFilesBeforeMinification
å±æ§ïŒããã©ã«ãå€ã¯
false
ïŒããããæå°ååã«ãã¡ã€ã«ã³ãŒãã®çµåãæå¹ã«ã§ããŸãã
<configuration> ⊠<bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd"> <core <css ⊠combineFilesBeforeMinification="true"> ⊠</css> <js ⊠combineFilesBeforeMinification="true"> ⊠</js> ⊠</core> ⊠</bundleTransformer> ⊠</configuration>
æ°ããã¢ãžã¥ãŒã«
ãã®éã«ããã³ãã«ãã©ã³ã¹ãã©ãŒããŒçšã®3ã€ã®å
¬åŒã¢ãžã¥ãŒã«ãäžåºŠã«äœæãããŸããã
- ãã¹ãããã»ããµBundleTransformer.Autoprefixer
- ãã©ã³ã¹ã¬ãŒã¿ãŒBundleTransformer.Handlebars
- ãã©ã³ã¹ã¬ãŒã¿ãŒBundleTransformer.Hogan
3ã€ã®ã¢ãžã¥ãŒã«ã¯ãã¹ãŠJavaScriptã©ã€ãã©ãªã®ã³ãŒãã«åºã¥ããŠãããããã€ã³ã¹ããŒã«åŸããã«ãããããã«ç¬èªã®JavaScriptãšã³ãžã³ãéžæããå¿
èŠããããŸãïŒè©³çŽ°ã«ã€ããŠã¯ã察å¿ããNuGetããã±ãŒãžã®
readme.txt
ãã¡ã€ã«ãåç
§ããŠãã ããïŒã
ãããããåå¥ã«æ€èšããŠã¿ãŸãããã
ãã³ãã«ãã©ã³ã¹ãã©ãŒããŒïŒèªåãã¬ãã£ãã¯ã¹
BundleTransformer.Autoprefixerã¢ãžã¥ãŒã«ã«ã¯ãCSSã³ãŒãã®ãã³ããŒãã¬ãã£ãã¯ã¹ãæŽæ°ãã
AutoprefixCssPostProcessorãã¹ã
ããã»ããµãŒ AutoprefixCssPostProcessor
ãå«ãŸããŠããŸãã
AutoprefixCssPostProcessor
ã¯ãäžè¬çãªCSSãã¹ãããã»ããµ
-Autoprefixer ïŒããŒãžã§ã³3.1ãçŸåšãµããŒããããŠããŸãïŒã«åºã¥ããŠããŸãã Andprei Sitnikã®èšäº
ãAutoprefixer-CSSãã¬ãã£ãã¯ã¹åé¡ã®æçµçãªè§£æ±ºçããããã®è£œåã«é¢ãããã¹ãŠã®åºæ¬æ
å ±ã匷調ã§ãããããAutoprefixerãå¿
èŠãªçç±ã«ã€ããŠã¯èª¬æããŸããã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãBundleTransformer.Autoprefixerãé©åã«æ§æããæ¹æ³ã«ã€ããŠèª¬æããŸãã ãã®èšäºã®ããã¹ãããã»ããµãŒãããã³ãHTTPãã³ãã©ãŒã®é«åºŠãªãããã°ãã»ã¯ã·ã§ã³ãèªãã§ããªãå Žåã¯ãå¿
ãèªãã§ãã ããã BundleTransformer.Autoprefixerã®æäœã«é¢é£ããå€ãã®éèŠãªãã€ã³ãã«è§ŠããŸãã
BundleTransformer.Autoprefixerãã€ã³ã¹ããŒã«ããJavaScriptãšã³ãžã³ãéžæãããã次ãå®è¡ããå¿
èŠããããŸãã
AutoprefixCssPostProcessor
ãã¹ãAutoprefixCssPostProcessor
ãã¢ã¯ãã£ããªCSSãã¹ãAutoprefixCssPostProcessor
ã®ãªã¹ãã®æåŸã«è¿œå ãAutoprefixCssPostProcessor
ãããã¯ãæ§æèŠçŽ /configuration/bundleTransformer/core/css
ã®defaultPostProcessors
å±æ§ã§èšå®ãããŸããCssAssetHandler
HTTPãããã°ãã³ãã©ãŒãWeb.config
ãã¡ã€ã«ã«Web.config
ãŸãïŒãããã°ã¢ãŒãã«å¿
èŠïŒãCustomBundleResolver
ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãçŸåšã®BundleResolver
`aïŒãããã°ã¢ãŒãã«å¿
èŠïŒãšããŠç»é²ããŸãã
次ã«ã
Web.config
ãã¡ã€ã«ã®æ§æã»ã¯ã·ã§ã³
/configuration/bundleTransformer/autoprefixer
ãAutoprefixerã¢ã«ãŽãªãºã ã®ãªãã·ã§ã³èšå®ãè¡ãããšãã§ããŸãã
<configuration> ⊠<bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd"> ⊠<autoprefixer cascade="true" safe="false"> <browsers> <add conditionalExpression="> 1%" /> <add conditionalExpression="last 2 versions" /> <add conditionalExpression="Firefox ESR" /> <add conditionalExpression="Opera 12.1" /> </browsers> ⊠</autoprefixer> ⊠</bundleTransformer> ⊠</configuration>
autoprefixer
èšå®ã»ã¯ã·ã§ã³ã®ãã¹ãŠã®ããããã£ã詳现ã«æ€èšããŸãã
ç©ä»¶ | ããŒã¿å | ããã©ã«ãå€ | 説æ |
---|
browsers | æ¡ä»¶åŒãªã¹ã | 1%
last 2 versions ã
Firefox ESR ã
Opera 12.1 | ãµããŒããããŠãããã©ãŠã¶ãŒã®ãµãã»ãããå®çŸ©ããããã®æ¡ä»¶åŒã®ãªã¹ããå«ãŸããŠããŸãã æ¡ä»¶åŒã®æ§æã¯ãAutoprefixerã®å
¬åŒããã¥ã¡ã³ãã§è©³çŽ°ã«èª¬æãããŠããŸãã browsers èŠçŽ ãæå®ãããŠããªãã空ã®å Žåãããã©ã«ãå€ã䜿çšãããŸãã ãã³ããŒãã¬ãã£ãã¯ã¹ã®è¿œå ãå®å
šã«ç¡å¹ã«ããã«ã¯ã none çãã1ã€ã®æ¡ä»¶åŒã®ã¿ãbrowsers èŠçŽ ã«æ®ãå¿
èŠããããŸãã |
cascade | ããŒã«å€ | true | 次ã®åœ¢åŒã®ãã¬ãã£ãã¯ã¹ã®èŠèŠçãªã«ã¹ã±ãŒããäœæããŸãã
-webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; |
safe | ããŒã«å€ | false | å£ããCSSã³ãŒãã解æããããã®ç¹å¥ãªã»ãŒãã¢ãŒããæå¹ã«ããŸãã |
ãã³ãã«ãã©ã³ã¹ãã©ãŒããŒïŒãã³ãã«ããŒ
BundleTransformer.Handlebarsã¢ãžã¥ãŒã«ã«ã¯ãJavaScriptã§Handlebarsãã³ãã¬ãŒããããªã³ã³ãã€ã«ãã
HandlebarsTranslator
ãã©ã³ã¹ã¬ãŒã¿ãŒã¢ããã¿ãŒãå«ãŸããŠããŸãã
HandlebarsTranslator
ã¯ãäžè¬çãªãã³ãã¬ãŒããšã³ãžã³
-Handlebars.js ïŒããŒãžã§ã³2.0.0ãçŸåšãµããŒããããŠããŸãïŒã«åºã¥ããŠããŸãã ãã®ãã©ã³ã¹ã¬ãŒã¿ã¯ãã³ãã¬ãŒããšã³ãžã³ã«åºã¥ããŠãããšããäºå®ã«ãããããããJavaScriptã³ãŒããçæããä»ã®ãã©ã³ã¹ã¬ãŒã¿ãšå€§å·®ãããŸããã ãã³ãã¬ãŒãã³ãŒããæã€ãã¡ã€ã«ïŒããã©ã«ãã§ã¯ããã©ã³ã¹ã¬ãŒã¿ã¯æ¡åŒµå
.handlebars
ããã³
.hbs
æã€ãã¡ã€ã«ãåŠçããŸãïŒã¯ãã¹ã¯ãªãããã³ãã«ã«ç»é²ããå¿
èŠããããŸãã
⊠using Core.Bundles; using Core.Orderers; ⊠public class BundleConfig { public static void RegisterBundles(BundleCollection bundles) { ⊠var commonTemplatesBundle = new CustomScriptBundle("~/Bundles/CommonTemplates"); commonTemplatesBundle.Include( ⊠"~/Scripts/handlebars/handlebars.runtime.js", "~/Scripts/handlebars/HandlebarsHelpers.js", "~/Scripts/handlebars/HandlebarsTranslatorBadge.handlebars", âŠ); commonTemplatesBundle.Orderer = nullOrderer; bundles.Add(commonTemplatesBundle); ⊠} }
CoffeeScriptãTypeScriptãšã¯ç°ãªããã³ã³ãã€ã«æžã¿ã®Handlebarsãã³ãã¬ãŒãã«ã¯ã
handlebars.runtime.js
ãã¡ã€ã«ïŒãã³ãã¬ãŒãã®ã³ã³ãã€ã«ã«å¿
èŠãªã³ãŒããé€å€ããã
handlebars.js
ã©ã€ãã©ãªã®
handlebars.js
ããŒãžã§ã³ïŒãå¿
èŠã§ãã ãã®ãã¡ã€ã«ã¯ãå
±æã©ã€ãã©ãªã®ãã³ãã«ãŸãã¯Handlebarsãã³ãã¬ãŒãã®ãã³ãã«ã«é
眮ã§ããŸãã äž»ãªãã®ã¯ã圌ã®åºåããã³ãã¬ãŒãã®çºè¡šåã«è¡ãããšã§ãã
Web.config
ãã¡ã€ã«ã®æ§æã»ã¯ã·ã§ã³
/configuration/bundleTransformer/handlebars
ã§ããã³ãã¬ãŒãã®ããªã³ã³ãã€ã«ãæ§æã§ããŸãã
<configuration> ⊠<bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd"> ⊠<handlebars namespace="Handlebars.templates" rootPath="" knownHelpers="link" knownHelpersOnly="true" data="false"> ⊠</handlebars> ⊠</bundleTransformer> ⊠</configuration>
handlebars
æ§æã»ã¯ã·ã§ã³ã®ãã¹ãŠã®ããããã£ã詳现ã«æ€èšããŸãã
ç©ä»¶ | ããŒã¿å | ããã©ã«ãå€ | 説æ |
---|
namespace | ã²ã | Handlebars.templates | ãã³ãã¬ãŒãã®åå空éãæå®ããŸãã |
rootPath | ã²ã | ç©ºè¡ | ãã³ãã¬ãŒãã®ã«ãŒããã£ã¬ã¯ããªãžã®ãã¹ãæå®ããŸãã 次ã®ãã³ãã¬ãŒãURLããããšããŸã- /Scripts/handlebars/discussions/index.hbs ã ããã©ã«ãã§ã¯ããã®ãããªãã³ãã¬ãŒãã®ååã¯ãã¡ã€ã«å- index ããæœåºãããŸããããã®ããããã£ã/Scripts/handlebars/ ã«èšå®ãããšã次ã®ãã³ãã¬ãŒãå- discussions/index ååŸããdiscussions/index ã |
knownHelpers | ã²ã | ç©ºè¡ | æ¢ç¥ã®ãã«ããŒã®ã³ã³ãåºåããªã¹ããå«ãŸããŸãã ãã®ãªã¹ãã«ãã«ããŒåãè¿œå ãããšãããããžã®åŒã³åºããæé©åã§ãããããã³ã³ãã€ã«ããããã³ãã¬ãŒãã®ãµã€ãºãå°ãããªããŸãã |
knownHelpersOnly | ããŒã«å€ | false | æ¢ç¥ã®ãã«ããŒã®ã¿ã®äœ¿çšãèš±å¯ããŸãã ãã®ããããã£ã®å€ãtrue ã§ããã³ãã¬ãŒãã³ãŒãã«çµã¿èŸŒã¿ã§ãªããã«ããŒãŸãã¯knownHelpers ããããã£ã§å®£èšãããŠããªããã«ããŒãžã®åŒã³åºããå«ãŸããŠããå ŽåãäŸå€ãã¹ããŒãããŸãã |
data | ããŒã«å€ | true | ã³ã³ãã€ã«ã§ãã³ãã¬ãŒãå
ã®@ããŒã¿å€æ°ã®ããŒã¿ãå«ããããšãã§ããŸãïŒäŸïŒ @index ïŒã ãã³ãã¬ãŒãã«å埩ãããã¯ãããã@ dataå€æ°ã䜿çšãããŠããªãå Žåããã®ããããã£ãfalse ã«èšå®ããããšããå§ããfalse -ããã«ããããã©ãŒãã³ã¹ãåäžããŸãã |
ãŸãããã³ãã¬ãŒãã³ãŒããå«ããã¡ã€ã«ã®ååãã¢ã³ããŒã¹ã³ã¢ã§å§ãŸãå Žåããã³ãã¬ãŒãã¯ã°ããŒãã«ãªéšåè¡šçŸãšããŠã³ã³ãã€ã«ãããŸãïŒæåã®ã¢ã³ããŒã¹ã³ã¢ã¯ãã³ãã¬ãŒãåããåé€ãããŸãïŒã
ãã³ãã«ãã©ã³ã¹ïŒããŒã¬ã³
BundleTransformer.Hoganã¢ãžã¥ãŒã«ã«ã¯ãJavaScriptã§Mustacheãã³ãã¬ãŒããããª
HoganTranslator
ãã
HoganTranslator
ãå«ãŸããŠããŸãã
HoganTranslator
ã¯ã人æ°ã®ããMustacheãã³ãã¬ãŒãã³ã³ãã€ã©ã§ãã
Hogan.js ïŒçŸåšãããŒãžã§ã³3.0.2ããµããŒããããŠããŸãïŒã«åºã¥ããŠããŸãã BundleTransformer.Hoganã®åäœåçã¯ãå€ãã®ç¹ã§BundleTransformer.Handlebarsã®åäœåçã«äŒŒãŠãããããéèŠãªéãã®ã¿ãèæ
®ããŸãã (
.mustache
) :
⊠using Core.Bundles; using Core.Orderers; ⊠public class BundleConfig { public static void RegisterBundles(BundleCollection bundles) { ⊠var commonTemplatesBundle = new CustomScriptBundle("~/Bundles/CommonTemplates"); commonTemplatesBundle.Include( "~/Scripts/hogan/template-{version}.js", "~/Scripts/hogan/HoganTranslatorBadge.mustache", âŠ); commonTemplatesBundle.Orderer = nullOrderer; bundles.Add(commonTemplatesBundle); ⊠} }
Handlebars JavaScript- â
template-3.0.2.js
( , , ).
/configuration/bundleTransformer/hogan
Web.config
:
<configuration> ⊠<bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd"> ⊠<hogan useNativeMinification="false" variable="templates" namespace="" delimiters=""> <sectionTags> <add sectionName="newWindow" openingTagName="_newWindow" closingTagName="newWindow" /> </sectionTags> ⊠</hogan> ⊠</bundleTransformer> ⊠</configuration>
hogan
:
| | | 説æ |
---|
useNativeMinification | | false | true , , . |
variable | ã²ã | templates | JavaScript-, . |
namespace | ã²ã | | , . |
sectionTags | | | , . , _newWindow newWindow , {{_newWindow}} target="_blank"{{/newWindow}} . |
delimiters | ã²ã | | , . , ASP, â <% %> ( Web.config â <% %> ). |