标签: bundling-and-minification

使用ASP.NET Web Optimization和BundleTransformer来正确使用IItemTransform来纠正CSS捆绑中的路径是什么?

我目前正在开发一个项目,该项目使用ASP.NET Web Optimization库(v 1.1.0-Beta1)和Bundle Transformer扩展(v 1.7.3-Beta1用于核心,1.7.0-Beta1用于LESS)用于将LESS转换为CSS.基于Web搜索,CSS(及更少)中的路径似乎是一个常见问题,在大多数情况下,建议手动修改CSS并完成它.但是,由于我们的开发和生产环境之间的差异,并且没有拥有受影响的CSS,这样的解决方案是不可行的.

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

其次,我选择的路线是使用IItemTransform这样的CssRewriteUrlTransform(在这篇文章中提到.即使这个解决方案也有它的局限性.因此我试图编写自己的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);
}
Run Code Online (Sandbox Code Playgroud)

IItemTransform的实现:

public class RewriteUrlTransform : IItemTransform
{
    public string Process(string includedVirtualPath, string input)
    {
        return (input manipulated with proper path replacing …
Run Code Online (Sandbox Code Playgroud)

web-optimization asp.net-mvc-4 bundling-and-minification asp.net-optimization bundletransformer

5
推荐指数
1
解决办法
4101
查看次数

asp.net 4.5脚本捆绑也没有bundeling也没有缩小

我将一个项目从asp.net 3.5升级到4.5,以便使用脚本捆绑和javascript的缩小.现在我把它全部运行了,脚本都出现在我定义的包中但是它们没有在一个脚本中"捆绑"在一起而且它们没有缩小.

继承人我拥有的......

default.aspx包含:

<asp:ScriptManager
ID="scriptmanager"
LoadScriptsBeforeUI="false"
runat="server"
    ScriptMode="Release"
    EnableScriptLocalization="false"
>
    <Scripts>
        <%--Framework Scripts--%>
        <asp:ScriptReference Path="~/bundles/MyBundle" ScriptMode="Release"/>
        <%--Site Scripts--%>
    </Scripts>
</asp:ScriptManager>
Run Code Online (Sandbox Code Playgroud)

Global.asax中的Application_Start:

BundleTable.EnableOptimizations = true;
BundleConfig.RegisterBundles(BundleTable.Bundles);
Run Code Online (Sandbox Code Playgroud)

BundleConfig.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Optimization;

namespace MyNameSpace
{
    public class BundleConfig
    {
        // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254726
        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new ScriptBundle("~/bundles/MyBundle").Include(
                "~/Scripts/WebForms/WebForms.js",
                "~/Scripts/WebForms/MSAjax/MicrosoftAjax.js",
                "~/Scripts/WebForms/MSAjax/MicrosoftAjaxWebForms.js",
                "~/Scripts/WebForms/TreeView.js",
                "~/Scripts/WebForms/Focus.js",
                "~/Scripts/WebForms/MenuStandards.js"));

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我甚至在web.config中关闭了调试,即使我尝试在scriptmanager中强制释放模式以及脚本引用.

<compilation debug="false" batch="true" targetFramework="4.5">
Run Code Online (Sandbox Code Playgroud)

输出仍然是几个引用:

<script src="/MyProj/WebResource.axd?d=pynGkmcFUV13He1Qd6_TZA6EiyQ1YRW47qIzscWLzWU7jP_7DjoC2XbU7kCBkgYcJdoeAwqaVpUMnbWRsvhdMw2&amp;t=634896541540000000" type="text/javascript"></script>
<script src="/MyProj/ScriptResource.axd?d=zvkqIRNUspAvS1yKeFhMb4kS_IY-Q_9Yn_KOfmzKLnliETz8uip5T2BUr1JOPE4XV1bmnifY3Eg8vrX8bPLYT71P0Kf8DwEcoRw5fj2tqHdQSorRXVpasfsMXeJLHbT_alkHjf2wIrgxLzxYvocKIA2&amp;t=12e197aa" …
Run Code Online (Sandbox Code Playgroud)

asp.net scriptmanager bundling-and-minification

5
推荐指数
1
解决办法
3704
查看次数

VS 2012中的HTTP处理程序和javascript捆绑

目前我正在试图安装一个项目,以实现对JavaScript文件的定位(如描述在这里),但在同一时间,我想捆绑,然后再缩小在项目中的JavaScript.我在这里关注了捆绑和缩小的教程

我已经能够让两者分开工作,但是当我试图让它们一起工作时,我无法使本地化正常工作.我认为这是因为捆绑为它生成的捆绑/缩小的javascript创建了它自己的路由处理,所以我在webconfig中定义的httpHandler被忽略了.我一直收到javascript错误,说"CustomTranslate未定义".

我试图这样做是因为我们正在使用ExtJS构建一些控件,但我们需要能够将本地化应用于这些控件.关于如何让他们一起工作的任何帮助/想法将不胜感激.

没有使用MVC,而是在Visual Studio 2012中的asp.net中执行此操作.

这是我的代码:

BundleConfig.cs

namespace TranslationTest
{
    public class BundleConfig
    {
        public static void RegisterBundles(BundleCollection bundles)
        {
            //default bundles addeed here...

            bundles.Add(new ScriptBundle("~/bundles/ExtJS.axd").Include("~/Scripts/ExtJS/ext-all.js", "~/Scripts/ExtJS/TestForm.js"));

        }
    }
}    
Run Code Online (Sandbox Code Playgroud)

web.config中:

<globalization uiCulture="auto" />
<httpHandlers>
  <add verb="*" path="/bundles/ExtJS.axd" type="TranslationTest.ScriptTranslator, TranslationTest" />
</httpHandlers>
Run Code Online (Sandbox Code Playgroud)

Default.aspx的

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TranslationTest._Default" %>

<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
    <script src="/bundles/ExtJS.axd"></script>
</asp:Content>    
Run Code Online (Sandbox Code Playgroud)

TestForm.js:

Ext.require([
       'Ext.form.*',
       'Ext.layout.container.Column',
       'Ext.tab.Panel'
]);

Ext.onReady(function () {

    Ext.QuickTips.init();

    var bd = …
Run Code Online (Sandbox Code Playgroud)

javascript asp.net localization httphandler bundling-and-minification

5
推荐指数
1
解决办法
1066
查看次数

如何使用BundleTransformer YuiJsMinifier删除注释

我正在使用BundleTransformer缩小cssjs资源

        <yui>
            <css compressionType="Standard" removeComments="true" lineBreakPosition="-1" />
            <js compressionType="Standard" obfuscateJavascript="true" preserveAllSemicolons="false" disableOptimizations="false" ignoreEval="false" severity="0" lineBreakPosition="-1" encoding="UTF8" threadCulture="en-us" />
        </yui>
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样css可以指定removeComments="true" 但是js没有这样的选择.

我认为YUI js压缩器默认删除注释.是的,有点删除,但它仍然留下这样的评论:

/* NUGET: BEGIN LICENSE TEXT
 *
 *Bla bla bla
 *
 * NUGET: END LICENSE TEXT */

/*!
 * Bla
 * Licensed under http://www.apache.org/licenses/LICENSE-2.0
 */
Run Code Online (Sandbox Code Playgroud)

看起来没有办法强迫YIU js minifier删除评论.

https://github.com/yui/yuicompressor:

以/*开头的C风格评论!保存完好.这对包含版权/许可证信息的评论很有用

有没有什么我可以通过使用BundleTransformer完全删除捆绑的缩小输出文件中的所有类型的注释?谷歌页面速度强烈建议我这样做.

javascript yui-compressor bundling-and-minification bundletransformer asp.net-mvc-5

5
推荐指数
1
解决办法
1890
查看次数

使用CDN和HashContent(Cache Buster或指纹)的ASP.NET优化框架(JS和CSS缩小和捆绑)

!警告!!!

接受的答案是好的,但如果你有一个高流量的网站,有可能多次附加v =.该代码包含一个检查器.

我一直在寻找使用ASP.NET优化框架和UseCDN = true并且HashContent Number附加到Bundles的URI的任何示例或引用.不幸没有运气.以下是我的代码的简化示例.

我的捆绑代码非常简单

        bundles.UseCdn = true;

        BundleTable.EnableOptimizations = true;


        var stylesCdnPath = "http://myCDN.com/style.css";
        bundles.Add(new StyleBundle("~/bundles/styles/style.css", stylesCdnPath).Include(
            "~/css/style.css"));
Run Code Online (Sandbox Code Playgroud)

我从Master页面调用Render

 <%: System.Web.Optimization.Styles.Render("~/bundles/styles/style.css")%>
Run Code Online (Sandbox Code Playgroud)

生成的代码是

 <link href="http://myCDN.com/style.css" rel="stylesheet"/>
Run Code Online (Sandbox Code Playgroud)

如果我禁用UseCDN

 /bundles/styles/style.css?v=geCEcmf_QJDXOCkNczldjY2sxsEkzeVfPt_cGlSh4dg1
Run Code Online (Sandbox Code Playgroud)

当useCDN设置为true时,如何使bunlding添加v =哈希内容?

编辑:

我试过用

 <%: System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/styles/style.css",true)%> 
Run Code Online (Sandbox Code Playgroud)

如果CdnUse = true,它仍然不会生成v = hash

asp.net asp.net-mvc optimization bundling-and-minification

5
推荐指数
1
解决办法
1954
查看次数

使用MVC 4捆绑外部JavaScript文件

我在网上有不同的脚本:

externalurl/INTE /普通/ JS/script1.js

externalurl/INTE /普通/ JS/script2.js

externalurl/INTE //公共/ JS/script3.js

externalurl/INTE //公共/ JS/script4.js

externalurl/INTE //公共/ JS/script15.js

如何在我的解决方案中创建外部JavaScript的javascript包?

    bundles.Add(new ScriptBundle("~/bundles/inte").Include(
            "http://url/inte/common/js/script1.js",
            "http://url/inte/common/js/script2.js",
            "http://url/inte/common/js/script2.js));
Run Code Online (Sandbox Code Playgroud)

javascript asp.net-mvc bundle asp.net-mvc-4 bundling-and-minification

5
推荐指数
1
解决办法
1733
查看次数

在MVC中创建捆绑包的虚拟路径?

我在我的mvc应用程序中为脚本和样式创建了bundle.

bundles.Add(new ScriptBundle("〜/ bundles/jquery").Include("〜/ Scripts/jquery-1.*"));

bundles.Add(new StyleBundle("〜/ Content/css").Include("〜/ Content/CSS/abc.css"));

在这种情况下,因为存在一个真实的目录~/Content/CSS,所以存在名称冲突问题,因此它找不到css并且无法应用样式.所以我改变了虚拟路径~/Content/styles/css,它的工作原理.所以我在这里有点困惑,虚拟路径如何在这里工作?

c# asp.net-mvc bundling-and-minification

5
推荐指数
1
解决办法
1932
查看次数

缩小的javascript和css文件中的版权信息

我想我可能需要重新审视这个,出于好奇,如果没有别的.

是否允许从缩小的js和css文件中删除许可证信息,如果这些文件是使用指向未分隔源的源映射生成的,并且所有文件(具有许可证)都可用?

我问,因为当我缩小几个文件时,我发现我无法减少的大部分大小来自于携带所有许可证信息.我可以看到,对于浏览器功能和下载,可能只使用最小的缩小源,但该文件只能由浏览器使用来呈现.如果打开控制台,将下载源映射以将查询用户指向未经授权的源,并保留原始许可证完整且可根据请求提供的要求.

具体来说,Apache License 2.0(http://www.apache.org/licenses/LICENSE-2.0),MIT许可证(http://en.wikipedia.org/wiki/MIT_License)和GPLv2(https:// www.gnu.org/licenses/gpl-2.0.html)开始.

javascript css bundling-and-minification source-maps copyright-display

5
推荐指数
1
解决办法
878
查看次数

Web Essentials是否提供了一种在生产中使用捆绑的js文件但在开发中使用单个js文件的方法?

设置:

我有一个使用许多JavaScript文件的大型SPA应用程序,这些文件使用Visual Studio 2013中的Web Essentials捆绑捆绑在一起.然后,我在我的HTML页面上包含Web Essentials生成的缩小的js文件.此应用程序不使用ASP.NET

问题:

我希望能够分发HTML页面,其中包含为生产引用的单个缩小脚本,但是用于开发的单个未明确脚本.

原因:

即使使用地图文件,缩小的脚本也很难调试.变量和参数名称已缩小,因此调试器与源不匹配.此外,由于所有内容都在一个文件中,因此很难查看开发.

当前解决方案

我有一个咕噜咕噜的任务进入我的html文件并修改它,以便<script>替换标签.这与我添加到页面的每个文件一起增长.

Web Essentials是否提供了比我目前正在做的更好的解决方案,我可能会忽略它?

javascript visual-studio bundling-and-minification web-essentials

5
推荐指数
1
解决办法
1510
查看次数

MVC App上的CSS更改无法正常工作

我使用VS Express for web创建了一个MVC应用程序.它只会使用VS Express附带的默认内置CSS文件.
示例:如果我修改bootstrap.css文件(更改jumbotron颜色),并从VS本地运行,则更改很明显,但是当我进行Web部署时,这些更改都不明显.我还注意到当我将web.config文件修改为Debug = false时,当我从VS本地运行(以及在Web部署中)时,我所做的CSS更改并不明显.

CSS仍在应用,但我所做的任何更改都不会应用.该网站显示旧的默认jumbotron颜色.如果我在web.config中更改debug = true,那么jumbotron会显示我更新的颜色.当我在网站上部署我的网站时,没有应用任何CSS更改,它仍然使用默认的CSS文件,我甚至在服务器上检查了bootstrap.css,它显示了更新的jumbotron颜色,但是jumbotron仍然是网络上的默认颜色?? 超级混乱.

我做了很多阅读,尝试将以下内容添加到我的web.config中:

<remove name="BundleModule" />
<add name="BundleModule" type="System.Web.Optimization.BundleModule" />
Run Code Online (Sandbox Code Playgroud)

但这并没有解决它.我尝试从我的文件名中删除.css,这解决了当我使用debug = false从VS本地运行它时的问题,但是当我发布网站时,网站根本没有显示CSS样式.这不是缓存问题.它与bundle和debug = false有关,但我不知道是什么.我对web/MVC开发还很陌生.我用NuGet更新了我的web.optimization和microsoft.aspnet等.

我有一个非常艰难的时间,如果有人有一个建议,它的工作,我会很高兴!Stack Overflow上有很多关于此的帖子,但这些建议都没有对我有用.

这是我的bundle.config.cs:

using System.Web;
using System.Web.Optimization;

namespace HFHYYC
{
        public class BundleConfig
        {

        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/Scripts/jquery.validate*"));

            bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                    "~/Scripts/modernizr-*"));

            bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
                  "~/Scripts/bootstrap.js",
                  "~/Scripts/respond.js"));

            bundles.Add(new StyleBundle("~/Content/css").Include(
                  "~/Content/bootstrap.css",
                  "~/Content/site.css"));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

css asp.net-mvc visual-studio twitter-bootstrap bundling-and-minification

5
推荐指数
1
解决办法
1万
查看次数