2016-07-13 5 views
1

장고 앱이 있고 앱 안에 모든 자바 스크립트 파일과 CSS 파일을 묶어서 축소하려고합니다.django-pipeline : 왜 이러한 JS 줄이 yui-compressor를 중단 시키게합니까?

이렇게하려면 django-pipeline 1.2.6을 사용하고 있으며 JS 및 CSS 파일을 압축하기 위해 기본 YUICompressor를 사용하도록 설정 파일을 구성했습니다. 내 설정 파일은 다음과 같이 구성되어 있습니다 : 나는 명령 python src/foo_app/manage.py collectstatic을 실행

... 

# PIPELINE SETTINGS (for compressing/bundling css and js files) 
STATICFILES_STORAGE = "pipeline.storage.PipelineCachedStorage" 

PIPELINE_YUI_BINARY = "/usr/bin/yui-compressor" 

PIPELINE_JS = { 
    'min': { 
     'source_filenames': (    
      "js/*.js", 
     ), 
     'output_filename': 'js/min.js' 
    } 
} 

PIPELINE_CSS = { 
    ... 
} 

PIPELINE = True 

, 나는 "깨진 파이프"예외를 얻었다. 나는 유이 컴프레서가 JS 문제로 인해 부서지는 것을 빨리 깨달았다. 그래서 저는 yui-compressor가 충돌하는 파일과 코드 라인을 격리하는 프로세스를 시작했습니다.
$('#some-modal').dialog({ 
     ... 
     buttons: [ 
      { 
       text : 'Print', 
       click : function() { 
        ... 
       }, 
       class : 'foo-class bar-class' // <- this line 
      }, 
      { 
       text : 'Close', 
       click : function() { 
        ... 
       }, 
       class : 'foo-class bar-class' // <- this line 
      } 
     ], 
    }); 

나는이 클래스 정의를 제거

이, 유이 압축기 내 JS는 잘 압축 :

나는 결국 JQuery와 팝업에있는 버튼의 클래스 속성을 정의하는 두 개의 라인을 좁혀. 그러나이 줄이 포함되어 있으면 yui-compressor가 작동을 멈 춥니 다.

왜 이러한 라인은 압축기가 충돌하게합니까? 유효한 Javascript이며이 버튼의 클래스를 올바르게 설정합니다.

답변

1

아마 이것은 yui-compressor ES6 클래스 키워드 처리와 관련이 있습니다. 따옴표로 class 키를 포장보십시오 :

변경이 :

class : 'foo-class bar-class' // <- this line 

에 :

'class' : 'foo-class bar-class' // <- this line 
+0

이 문제를 해결 것으로 보인다. 감사. –