2014-07-01 2 views
5

자바 스크립트 라이브러리에 require을 호출하는 모듈이 있습니다. 나는 장고 - 파이프 라인 내의 .js 파일을 압축하려고하지만 collectstatic 후 웹 페이지에 오류가 있습니다 : 나는 장고 - 파이프 라인을 사용하지 않는 경우Django + Django-Pipeline with Javascript "필요"

UncaughtReferenceError: require is not Defined 

정상 테스트/배포가 수집 정전기와 잘 작동을 파일을 압축합니다. 의존성을 없애고 .js 파일을 축소하기위한 올바른 설정은 무엇입니까? 설명서는 일종의 스파 스입니다. 장고 파이프 라인이 올바른 선택입니까?

편집 : '필수'모델이 파이프 라인에서 먼저 압축되었는지 확인하려고했지만 오류가 반환되지 않고 전혀 require이라는 모듈을 압축 할 수 없습니다.

답변

2

당신의 JS 압축기는 (YUGLIFY 예를 들어) 또한 자바 스크립트 변수 이름을 축소에, 그래서 requirex 또는 y 같은 지명되었을 수 있기 때문입니다을 참조하십시오. JS 컴프레서의 올바른 옵션 설정을 극복하기 위해 변수 이름을 축소하지 않습니다.

http://django-pipeline.readthedocs.org/en/latest/compressors.html#pipeline-yui-js-arguments

Yuglify의 경우,이 인수는 이름을 엉망으로 중지 것이다, mangle:False 될 것이다.

+0

+1. 당신은'mange : false'를 설정하면'require' break가 수정 될 것이 틀림 없지만, 여전히 라이브러리 전체를 축소하는 것으로 끝납니다 (이 경우 350kb). 이것은 약간의 마이너스입니다. 그래서''장고 - 욕구 (django-require) '를 해봐야 할 것 같아. – user3467349

4

제 경험상, require.js와 django-pipeline을 모두 결합하는 것은 어렵습니다.

모든 javascript에 대해 require.js를 사용하는 한 프로젝트에서 작업했습니다. 나는 django-pipeline을 사용하려고했지만 require.js로 제대로 작동하지 못했습니다. 우리는 자바 스크립트에 대해서는 https://github.com/etianen/django-require, CSS 확장에 대해서는 django-pipeline으로 끝내게되었습니다.

require.js를 제거하고 파이프 라인을 사용하여 가져 오는 라이브러리를 수동으로 포함하거나 require.js를 사용하여 모든 자바 스크립트 자산을 빌드하고 축소하는 것이 좋습니다. 모든 자바 스크립트 파일을 빌드하고 템플리트에서 직접 또는 파이프 라인을 사용하여 링크하는 새로운 단계를 추가 할 수 있습니다.

죄송합니다.이 답변은 실제 '해결책'이 아니지만 "장고 파이프 라인이 올바른 선택입니까?" :)

+0

동의. django-pipeline으로 CSS를 다루는 것은 좋지만, JS에 관해서 우리는 django-require와 같이 좀 더 유연한 솔루션을 절대적으로 사용할 수 있습니다. –