【问题标题】:Is there a way to programmatically export/save generated javascript and css bundles?有没有办法以编程方式导出/保存生成的 javascript 和 css 包?
【发布时间】:2014-10-12 21:21:29
【问题描述】:

我正在使用 System.Web.Optimization BundleTable 进行 CSS 和 JavaScript 文件捆绑。我可以手动保存捆绑文件,方法是转到Chrome Developer Tools、Sources 选项卡,然后单击我要保存的捆绑包,然后在代码和Save as 上单击鼠标右键(截图如下)

我想知道有没有办法以编程方式保存它们(我不介意 javascript 或 .NET),因为我需要通过将它们与旧版本进行比较来测试捆绑文件中的更改以查看他们是否改变了。最终产品很可能是硒测试。

【问题讨论】:

  • Javascript 无法保存到本地文件。但是您可以轻松地在 Javascript/Greasemonkey 中编写一些内容,将元素添加到页面中,供您使用,因此您可以随意翻录(右键单击和复制)任何内容。但这听起来不像你想要的。任何(真正的)编程语言都可以很容易地下载网站的 html 文件,然后根据需要进行解析和保存。
  • 你用什么来创建bundle?
  • @Grundy .NET4.5 System.Web.Optimization BundleTable

标签: c# javascript css .net-4.5 bundling-and-minification


【解决方案1】:

我自己整理的。

    public static string GetBundleContents(string virtualPath)
    {
        OptimizationSettings config = new OptimizationSettings()
        {
            ApplicationPath = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath,
            BundleTable = BundleTable.Bundles
        };

        BundleResponse response = Optimizer.BuildBundle(virtualPath, config);
        return response.Content;
    }

    public static void WriteBundlesToDisk(string path)
    {
        foreach (var bundle in BundleTable.Bundles)
        {
            var bundleContents = BundleConfig.GetBundleContents(bundle.Path);
            File.WriteAllText(string.Format("{0}/{1}.{2}", path, bundle.Path.Split('/').Last(), BundleConfig.GetFileExtensionByBundleType(bundle)), bundleContents);
        }
    }

    public static string GetFileExtensionByBundleType(Bundle bundle) 
    {
        if (bundle is ScriptBundle)
            return "js";
        else if (bundle is StyleBundle)
            return "css";
        return "folderBundle";
    }

用法:

BundleConfig.WriteBundlesToDisk("c://bundles");

旁注:有一种名为 System.Web.Optimization.DynamicFolderBundle 的包没有被上述解决方案正确处理,它将保存为 .folderBundle 文件类型。

【讨论】:

  • 您好,我正在尝试相同的方法,但在我的 bundeconfig 类中看不到 GetBundleContents 和 GetFileExtensionByBundleType 方法。您可以编辑您的答案并将您正在使用的捆绑配置类放在此处的答案中。谢谢@Matas Vaitkevicius
  • @Alok 嗨,我在一年前做过这个,因为我不再为公司工作了。对不起。
  • 不用担心,你能给我一些关于如何实现相同目标的提示吗?一旦我完成我的代码,我会在这里发布谢谢
猜你喜欢
  • 2015-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
  • 2019-11-22
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
相关资源
最近更新 更多