4

所以我目前使用BundleTransformerLESS并且我正在尝试添加Autoprefixer后处理器。这个插件会自动接受 css liketransform: scale(1.5)并将其转换为-webkit-transformand -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

对于 LESS 文件,IIS 会自动转换它们,但它不应用Autoprefixer.

.css请求原始文件和文件时,有没有办法让 Autoprefixer 工作.less

如果不是,这对我来说似乎毫无意义,因为我看到的唯一选择是直接请求'Content/css/lessbundle虚拟 URL - 这将通过Autoprefixer. 它只会在发布版本中被缩小。

4

2 回答 2

9
于 2015-03-20T12:57:07.473 回答
0

除了@Taritsyn 所说的之外,您还需要确保您的捆绑包是

CustomScriptBundle()并不是ScriptBundle()

如果不是,您将收到稍微令人困惑的错误消息:

在“~/Content/css/myCssBundle”包中找不到转换器。


我发现深入研究它的实际工作原理很有趣

HTML 是使用附加参数编写的(仅查看源代码)?bundleVirtualPath

/Content/css/defenderrazor_DEBUG.less?
bundleVirtualPath=~%2fContent%2fcss%2fmyCssBundle

这会在web.config请求 .less 文件时被处理程序拦截,然后处理程序能够使用该包名称来查找您设置的任何转换 - 在这种情况下包括 .less 文件的默认后处理器AutoprefixCss

于 2015-05-16T23:01:54.950 回答