-->

什么是用于校正CSS捆绑与路径的ASP.NET Web优化BundleTransformer正确使用

2019-09-01 09:10发布

我目前正在研究使用该项目的ASP.NET Web优化库(1.1.0-β1)结合捆绑变压器延伸(V 1.7.3-β1核心,1.7.0-β1少)它是用于LESS转化成CSS。 基于Web的搜索路径CSS内(少)似乎是一个常见的问题,在大多数情况下,建议手动修改CSS并用它来完成。 但是,由于我们的开发和生产环境,并且不拥有受影响的CSS这样的解决方案之间的差异是不可行的。

两种解决方案似乎存在。 首先是覆盖由捆绑在包含内容的实际目录所定义的虚拟目录。 对我来说,这似乎是一个糟糕的选择。

其次,我所选择的路线,是使用IItemTransformCssRewriteUrlTransform (中提到的这篇文章 ,即使这个解决方案有它的局限性 。因此,我试图写我自己的ItemTransformer但似乎它的结果是以下面的方式使用时,执行将被忽略:

public static void RegisterBundles(BundleCollection bundles)
{
    /* among other work pass in IItemTransformer to fix paths */
    var styleBundle = new StyleBundle("~/bundles/css/styles")
        .Include(...)
        .Include("~/Content/less/font-awesome.less", new RewriteUrlTransform())
        .Include(...);

    styleBundle.Transforms.Add(new CssTransformer());
    styleBundle.Orderer = new NullOrderer();

    bundles.Add(styleBundle);
}

IItemTransform的执行情况:

public class RewriteUrlTransform : IItemTransform
{
    public string Process(string includedVirtualPath, string input)
    {
        return (input manipulated with proper path replacing bad path)
    }
}

除非我完全误解了如何IItemTransform被使用,这是非常有可能是由于缺少文件,我认为过程方法的返回是新的后处理CSS。 然而,回报似乎被忽略。 原始输入始终是在使用,甚至当我返回String.Empty() 我在这里做得不对或者是它确实是一个错误吗?

Answer 1:

不,你是正确理解这一点,该项目变换被应用到一个项目,他们被捆绑在一起之前,然后将包变换中运行。 您已验证了它在呼唤你,当你在调试器期望转换?



Answer 2:

束变压器本身支持在CSS-代码相对路径绝对的自动转换。 我告诉你,因为这产品的开发。



文章来源: What is the proper use of IItemTransform for correcting paths in CSS Bundling with ASP.NET Web Optimization and BundleTransformer?