因此,我目前使用BundleTransformer,LESS,并试图添加Autoprefixer后处理器。这个插件会自动获得像transform: scale(1.5)这样的css,并将其转换为-webkit-transform和-moz-transform。
如果我处于发布模式,或者有BundleTable.EnableOptimizations=true,那么一切都很好,前缀也会按预期添加。
但是,在调试模式下,我包中的所有单独的CSS / LESS文件都以单独的请求形式出现在HTML中。我在CSHTML文件中使用这个命令:
@Styles.Render("~/Content/css/lessbundle")例如,在调试模式下,将扩展到LINK标记,用于:
/cs/something.css
/css/lessfile1.less
/css/lessfile1.less而不是一个文件
/Content/css/lessbundle?v=RFAUSIwb-jEuuo4vHNTnTkE2LrN2jfHglX-Hk8HIF481对于较少的文件,IIS会自动转换它们,但是它不应用Autoprefixer。
在请求原始.css和.less文件时,是否有一种方法可以使自动重新修复程序工作?
如果不是的话,这对我来说似乎是毫无意义的,因为我看到的唯一选择就是直接请求'Content/css/lessbundle虚拟URL --它将通过Autoprefixer运行。它只会被缩小为一个发行版的构建。
发布于 2015-03-20 12:57:07
在文档中( “使用实例”、“调试HTTP处理程序”和“后处理器”)描述了如何解决这个问题。我将列出以下基本步骤:
RegisterBundles文件的App_Start/BundleConfig.cs方法中添加以下代码:
BundleResolver.Current =新的CustomBundleResolver();JsAssetHandler。若要在IIS集成模式下执行此操作,需要向/configuration/system.webServer/handlers元素添加以下代码:AutoprefixCssPostProcessor成为默认的CSS后处理程序之一,您需要对Web.config文件进行更改。在defaultPostProcessors属性中,\configuration\bundleTransformer\core\css元素必须将AutoprefixCssPostProcessor添加到逗号分隔列表的末尾(例如,defaultPostProcessors="UrlRewritingCssPostProcessor,AutoprefixCssPostProcessor")。发布于 2015-05-16 23:01:54
除了@Taritsyn所说的以外,您还需要确保您的包是
CustomScriptBundle()而非ScriptBundle()
如果不是,您将得到稍微令人困惑的错误消息:
在'~/Content/css/myCssBundle‘包中找不到转换器。
我发现更深入地研究一下这是如何运作的。
HTML是用附加的参数?bundleVirtualPath编写的(只是查看源代码)。
/Content/css/defenderrazor_DEBUG.less?
bundleVirtualPath=~%2fContent%2fcss%2fmyCssBundle这将被web.config中的处理程序在请求.less文件时截获,然后处理程序可以使用该包名查找您设置的任何转换--在本例中包括AutoprefixCss的默认后处理程序。
https://stackoverflow.com/questions/29001470
复制相似问题