3

JavaScript 번들의 출력을 난독 화하려고 시도하여 bundletransformer (YUI 압축기를 사용하는 번들 확장)을 발견했지만 구현에 성공하지 못했습니다. 지금까지 내가 RegisterBundles 방법에 다음 코드를 작성한 제공 documentation 읽어 :자바 스크립트 번들 난독 화 및 번들 변환기

 var nullBuilder = new NullBuilder();   
     var cssTransformer = new CssTransformer(); 

     var yuiSettings = new BundleTransformer.Yui.Configuration.YuiSettings(); 
     yuiSettings.JsMinifier.ObfuscateJavascript = true; 

     var jsTransformer = new JsTransformer(); 

     var nullOrderer = new NullOrderer(); 

     var scriptBundle = new CustomScriptBundle("~/jscbundle/").Include(
         "~/Assets/Scripts/jquery.js", 
         "~/Assets/Scripts/jquery-ui.js"); 

     scriptBundle.Builder = nullBuilder; 
     scriptBundle.Orderer = nullOrderer; 


     scriptBundle.Transforms.Add(jsTransformer); 

     bundles.Add(scriptBundle); 

과의 web.config에 다음 코드로부터 판단

<bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd"> 
<core> 
    <css> 
    <minifiers> 
     <add name="NullMinifier" type="BundleTransformer.Core.Minifiers.NullMinifier, BundleTransformer.Core" /> 
     <add name="YuiCssMinifier" type="BundleTransformer.Yui.Minifiers.YuiCssMinifier, BundleTransformer.Yui" /> 
    </minifiers> 
    <translators> 
     <add name="NullTranslator" type="BundleTransformer.Core.Translators.NullTranslator, BundleTransformer.Core" enabled="false" /> 
    </translators> 
    </css> 
    <js defaultMinifier="YuiJsMinifier" usePreMinifiedFiles="true"> 
    <minifiers> 
     <add name="NullMinifier" type="BundleTransformer.Core.Minifiers.NullMinifier, BundleTransformer.Core" /> 
     <add name="YuiJsMinifier" type="BundleTransformer.Yui.Minifiers.YuiJsMinifier, BundleTransformer.Yui" /> 
    </minifiers> 
    <translators> 
     <add name="NullTranslator" type="BundleTransformer.Core.Translators.NullTranslator, BundleTransformer.Core" enabled="false" /> 
    </translators> 
    </js> 
</core> 
<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> 

을 번들 출력 나는 난독 화되지 않았을뿐만 아니라 압축이 전혀 영향을 미치지 않는다고 추론 할 수있다. 나는 어떤 샘플도 온라인으로 찾을 수 없었고, 여기 저기 운이없는 몇 가지 설정을 변경하려고 시도했다! 그래서 나는 꽤 단서가없고 어떤 해결책이나 제안이라도 대단히 감사 할 것입니다. 미리 감사드립니다! 것을,

<configuration> 
    … 
    <bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd"> 
     <core> 
      <css> 
       <minifiers> 
        <add name="NullMinifier" type="BundleTransformer.Core.Minifiers.NullMinifier, BundleTransformer.Core" /> 
        <add name="YuiCssMinifier" type="BundleTransformer.Yui.Minifiers.YuiCssMinifier, BundleTransformer.Yui" /> 
       </minifiers> 
       <translators> 
        <add name="NullTranslator" type="BundleTransformer.Core.Translators.NullTranslator, BundleTransformer.Core" enabled="false" /> 
       </translators> 
      </css> 
      <js defaultMinifier="YuiJsMinifier"> 
       <minifiers> 
        <add name="NullMinifier" type="BundleTransformer.Core.Minifiers.NullMinifier, BundleTransformer.Core" /> 
        <add name="YuiJsMinifier" type="BundleTransformer.Yui.Minifiers.YuiJsMinifier, BundleTransformer.Yui" /> 
       </minifiers> 
       <translators> 
        <add name="NullTranslator" type="BundleTransformer.Core.Translators.NullTranslator, BundleTransformer.Core" enabled="false" /> 
       </translators> 
      </js> 
     </core> 
    </bundleTransformer> 
    … 
</configuration> 

오히려 문제는 사실에 의한 경우 : Web.config 파일

namespace TestYui 
{ 
    using System.Web.Optimization; 

    using BundleTransformer.Core.Bundles; 
    using BundleTransformer.Core.Orderers; 

    public class BundleConfig 
    { 
     public static void RegisterBundles(BundleCollection bundles) 
     { 
      var nullOrderer = new NullOrderer(); 

      var scriptBundle = new CustomScriptBundle("~/jscbundle/"); 
      scriptBundle.Include(
       "~/Assets/Scripts/jquery.js", 
       "~/Assets/Scripts/jquery-ui.js"); 
      scriptBundle.Orderer = nullOrderer; 

      bundles.Add(scriptBundle); 
     } 
    } 
} 

및 설정 :

답변

3

Bahador, 사실

, 우리는 매우 간단한 코드가 필요 웹 응용 프로그램이 디버그 모드로 실행됩니다.

로 전환 Web.config 파일에 다음 설정을 사용하여 모드를 해제하는 웹 응용 프로그램 :

<configuration> 
    … 
    <system.web> 
    <compilation debug="false" … /> 
    … 
    </system.web> 
    … 
</configuration> 

또는 App_Start\BundleConfig.cs 파일에 다음 코드를 추가합니다 당신이 문서를 읽기 전에

BundleTable.EnableOptimizations = true; 

을 번들 트랜스포머의 경우 ASP.NET MVC 4 tutorial의 챕터 “Bundling and Minification "을 읽는 것이 좋습니다.

+0

응답을 보내 주셔서 감사 드리며 코드가 엉망인 것에 대해 유감스럽게 생각합니다. 나는 우둔한 마음으로 설정을 수동으로 설정하려고 했으므로 ... 제공 한 코드로 다시 시도하고 곧보고 할 것입니다. . BTW 디버그가 이미 "false"로 설정되었고 EnableOptimizations가 "true"로 설정되었습니다. –

+0

친애하는 @Andrey, 불행히도 결과가 여전히 동일하고 또한 친절하게 제공되는 코드에 난독 처리와 관련된 설정이 포함되어 있지 않은 것으로 나타났습니다. 그 외에도 태그를 추가했습니다. 원래의 질문이지만 결과는 여전히 축소 된 것처럼 보이지만 난독 화되지는 않으며 주석도 제거되지 않습니다. YUI 모듈이 호출되는지 여부를 디버깅 할 수있는 방법을 제안 해 주시겠습니까? 또는 프로세스를 디버깅하는 방법은 무엇입니까? 당신의 도움을 주셔서 대단히 감사합니다. –

+0

제공된 번들러 코드에 새로운 JsTransformer를 추가하는 코드가 포함되어 있지 않은 것으로 나타났습니다. –